3

在 __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
4

2 回答 2

-1

不需要在需要类属性之前定义它们,至少从解释器的角度来看是这样,但有一个巨大的收获,因为它极大地提高了代码的可读性。为此,您应该只在类定义中定义它们,而不是在 init 中。

此类定义的示例是:

class MyClass:
    """A simple example class"""
    i = 12345
    def f(self):
        return 'hello world'

您可以在文档http://docs.python.org/2/tutorial/classes.html中阅读更多内容

于 2013-08-13T19:32:38.940 回答
-1

对于您的特定示例,两种方式都过于复杂。尝试:

class Foo(object):
    def __init__(self):
        self.bar = Bar()
于 2013-08-13T20:38:35.190 回答