我想做以下事情:我有一个容器级容器,它有 属性attr,它引用另一个类OtherClass。
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)
我想:
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'
我该怎么做?
答案 0 :(得分:2)
不确定这是否是您所需要的。对我来说似乎是一个奇怪的设计
>>> class OtherClass(int):
... def __init__(self, value):
... self._value = value
... def another(self):
... return self._value ** 2
...
>>> class Container:
... def __init__(self, attr):
... self.attr = OtherClass(attr)
...
>>> x=Container(2)
>>> x.attr
2
>>> x.attr.another()
4
只是 - 因为你使用类 - 并不意味着它是OO-lyn gnibbler
答案 1 :(得分:0)
除非OtherClass
覆盖__int__()
,否则您不能通过int()
来获取整数值。
答案 2 :(得分:0)
attr
是什么意思?你无法双管齐下;要么它是某个函数的返回值,要么是OtherClass
的实例。
如何让OtherClass
继承自Integer
?