Python 3.x 我们如何称呼自我(self)下的self.n?它是实例属性吗?

Python 3.x 我们如何称呼自我(self)下的self.n?它是实例属性吗?,python-3.x,Python 3.x,我猜self.n不是实例属性,因为它不出现在构造函数部分下。你怎么称呼它 class PowTwo: """Class to implement an iterator of powers of two""" def __init__(self, max = 0): self.max = max def __iter__(self): self.n = 0 return self def __next_

我猜self.n不是实例属性,因为它不出现在构造函数部分下。你怎么称呼它

class PowTwo:
    """Class to implement an iterator
    of powers of two"""

    def __init__(self, max = 0):
        self.max = max

    def __iter__(self):
        self.n = 0
        return self

    def __next__(self):
        if self.n <= self.max:
            result = 2 ** self.n
            self.n += 1
            return result
        else:
            raise StopIteration
第二类:
“”类来实现迭代器
二次幂
定义初始值(自,最大值=0):
self.max=max
定义(自我):
self.n=0
回归自我
定义下一个(自我):

如果self.n如评论员所说,它仍然是一个实例属性

Python类是完全动态的,这意味着您可以随时定义新的实例属性,例如本例中的
self.n=0
。作为一种良好的编程风格,它们通常在
\uuuu init\uuuuu
中定义,但这只是一种惯例

在您的代码示例中,最好在
\uuuu init\uuuuu
中定义
self.n
——这样您就不会有一个没有定义
self.n
的不一致类实例。即:

def\uuuu init\uuuuuu(self,max=0):
self.n=无
self.max=max
定义(自我):
self.n=0
回归自我

此外,最好将
self.n
重命名为
self,以记录它是私人使用的。它仍然是一个实例属性。我可能会添加
self.n
应命名为
self.\u n
以记录该属性被用作私人属性。