例如,请考虑以下类:
class A:
def __init__(self):
self.attr1 = value
self.attr2 = self.foo()
def foo(self):
return self.attr1 ** 2
这是正确的方法,我应该将attr1
作为参数传递给foo
,还是应该在课堂外定义foo
?
答案 0 :(得分:2)
这是完全正常的,也是一种常见的模式 - 你必须要小心,在调用它之前已经设置了foo()
所关注的所有属性。
这在定义容器类时经常使用。例如,类似列表的类:
class ListLike:
def __init__(self, items=[]):
self.lst = []
self.thingy = 'foo'
for item in items:
self.add(item)
def add(self, item):
self.lst.append(item)