Python类中的名称空间
我有这个:Python类中的名称空间,python,class,namespaces,scope,Python,Class,Namespaces,Scope,我有这个: class MyClass: """A simple example class""" i = 12345 def f(self): print i # self.i will work just fine return 'hello world' 当我这样做时: >>> x = MyClass() >>> >>> x.f() 我
class MyClass:
"""A simple example class"""
i = 12345
def f(self):
print i # self.i will work just fine
return 'hello world'
当我这样做时:
>>> x = MyClass()
>>>
>>> x.f()
我得到了一个错误,正如预期的那样
我的问题是:
print i
正在尝试打印全局(用于模块)变量i
。如果要使用该类的成员,应编写self.i
self
是唯一可用的方法回答:我不这么认为,但即使是这样,逻辑/代码您使用的是什么版本的python可能也不容易?@SnakesandCoffee:这与问题无关。对于3,可能重复:是的,通过类引用它:
MyClass.I
。同样相关:对于2,将类作为名称空间没有意义。如果您更改了可变i
的内容,这意味着什么?对于类对象,即子类的实例,是否已更改?显式优于隐式,因此对于类,您必须显式地说明要引用的内容。类属性、继承的类属性或实例属性本身。@MartijnPieters感谢您的精彩解释。