Zac*_*ach 4 python scope object python-2.7
这是情况
class Person(object):
NumRid = 1
def __init__(self, name, rid = NumRid):
self.name = name
self.rid = rid
NumRid += 1
class Investor(Person):
pass
Run Code Online (Sandbox Code Playgroud)
然后我进入交互式python会话,输入然后输入from file import *
Investor('Bob'),它告诉我在赋值之前引用局部变量NumRid,at NumRid += 1
.
据我可以通过谷歌搜索来说,NumRid应该在类的本地命名空间中,并且可以从类函数中访问....所以这有什么用呢?我是否需要宣布两者都是全球性的; 或者是否有一个可以输入的神奇单词,以便在类命名空间中查找NumRid(如果有的话)?
在__init__
函数内部,没有NumRid
,但是你试图增加它.
它应该self.NumRid += 1
是一个实例变量,或者Person.NumRid += 1
它是一个类变量(或者,以防止重命名类的未来 - self.__class__.NumRid += 1
).
归档时间: |
|
查看次数: |
5065 次 |
最近记录: |