在__init__方法或getter中定义私有类变量是否更好?似乎在调用变量之前无需定义变量。
在 init 中定义变量:
class Foo(object):
def __init__(self):
self._bar = None
@property
def bar(self):
if self._bar is None:
self._bar = Bar()
return self._bar
@bar.setter
def bar(self, value):
self._bar = value
在getter中定义它:
class Foo(object):
@property
def bar(self):
if not hasattr(self, '_bar'):
self._bar = Bar()
return self._bar
@bar.setter
def bar(self, value):
self._bar = value
答案 0 :(得分:-1)
在您需要之前无需定义类属性,至少不需要从解释器角度来定义类属性,但是因为它极大地提高了代码的可读性,所以可以获得巨大的收益。为此,你应该在类定义中定义它们,而不是在init中。
此类定义的示例如下:
class MyClass:
"""A simple example class"""
i = 12345
def f(self):
return 'hello world'
中阅读更多内容
答案 1 :(得分:-1)
对于您的特定示例,两种方式都过于复杂。尝试:
class Foo(object):
def __init__(self):
self.bar = Bar()