У меня есть класс A, инкапсулирующий экземпляр класса B, и дополнительные вещи. Ниже приведен пример с игрушкой.
class B(object):
def __init__(self):
self.b = 2
def square(self):
return self.b * self.b
class A(object):
def __init__(self, x):
self.b = B()
a = A(1)
print(a.b.square())
Каждый раз, когда экземпляр A хочет вызвать метод в B, мне всегда нужно делать что-то вроде 'a.b'. Я надеюсь избавиться от «.b» для удобства пользователя. Следующие коды делают работу.
class B(object):
def __init__(self):
self.b = 2
def square(self):
return self.b * self.b
class A(object):
def __init__(self, x):
self.b = B()
def square(self):
return self.b.square()
a = A(1)
print(a.square())
Проблема в том, что класс B происходит из-за пределов библиотеки, и в dir есть много разных типов вещей. Я не мог сделать это один за другим вручную, как описано выше. Какие-нибудь магические способы справиться с этим?