_()内部和外部变量之间的差异除了名字以外,这些类之间有什么区别吗?class WithClass ():
def __init__(self):
self.value = "Bob"
def my_func(self):
print(self.value)class WithoutClass ():
value = "Bob"
def my_func(self):
print(self.value)如果我使用或不使用__init__方法来声明变量。value?我主要担心的是,我会以一种方式使用它,而这会给我带来更多的问题。
3 回答

慕容3067478
TA贡献1773条经验 获得超3个赞
无我
class foo(object): x = 'original class'c1, c2 = foo(), foo()
c1.x = 'changed instance'c2.x>>> 'original class'
foo.x = 'changed class'c2.x>>> 'changed class'
c1.x>>> 'changed instance'
带着自己
class foo(object): def __init__(self): self.x = 'original self'c1 = foo()foo.x = 'changed class'c1.x>>> 'original self'

一只斗牛犬
TA贡献1784条经验 获得超2个赞
免责声明
__init__
:
__init__
:
self
我的贡献:
self
解释:
self
self
self
例:
#!/usr/bin/env pythonclass Foo: static_var = 'every instance has access' def __init__(self,name): self.instance_var = 'I am %s' % name def printAll(self): print 'self.instance_var = %s' % self.instance_var print 'self.static_var = %s' % self.static_var print 'Foo.static_var = %s' % Foo.static_var f1 = Foo('f1')f1.printAll()f1.static_var = 'Shadowing static_var'f1.printAll()f2 = Foo('f2')f2.printAll()Foo.static_var = 'modified class'f1.printAll()f2.printAll()
输出量:
self.instance_var = I am f1 self.static_var = every instance has accessFoo.static_var = every instance has access self.instance_var = I am f1 self.static_var = Shadowing static_varFoo.static_var = every instance has access self.instance_var = I am f2 self.static_var = every instance has accessFoo.static_var = every instance has access self.instance_var = I am f1 self.static_var = Shadowing static_varFoo.static_var = modified classself.instance_var = I am f2 self.static_var = modified classFoo.static_var = modified class
添加回答
举报
0/150
提交
取消