Je veux faire ce qui suit: J'ai un Container-classe Container, il a attribut attr, qui se réfère à une autre classe OtherClass.L'accès Python à l'objet en tant que fonction (pas __call__)
class OtherClass:
def __init__(self, value):
self._value = value
def default(self):
retirn self._value
def another(self):
return self._value ** 2
def as_str(self):
return 'String: %s' % self._value
class Container:
def __init__(self, attr):
self.attr = OtherClass(attr)
Je veux:
x = Container(2)
x.attr # when accessing the attribute - return value from default method
2
x.attr.another() # but also an attribute can be treated as an object
4
x.attr.as_str()
'String: 2'
Comment puis-je faire cela?
Je ne peux pas croire que je perdu 20 minutes sur ce . Assurez-vous juste que 'attr' est une classe qui a une méthode appelable' autre'. Cela ne peut pas être fait avec les propriétés, les proxies ou la métaclasse. –