1
Matrix24 OP 为毛不可以修改问题。问题是这样子的:
具体的如下: class AAA(object): ····def Go(self): ········self.one = 'hello' 和下面的 class AAA(object): ····def Go(self): ········one = 'hello' 两者的one,有什么区别? |
2
binux 2014-03-02 18:53:26 +08:00
我去,你自己发了两篇讲这个的文章你自己都没看过吗?
|
4
binux 2014-03-02 18:56:50 +08:00
|
5
hahastudio 2014-03-02 19:01:07 +08:00 1
https://gist.github.com/hahastudio/9304929
你自己试试就知道了 AAA中的one,是attribute 下面的AAA中的one,是method Go的local variable |
6
Matrix24 OP @binux 其实我就想问一句,class下的def XXX里面的定义的变量,加self和不加有什么区别,它是不是和其他的一样?
因为我现在认为__init__()下是一个特殊的区域,在这里定义self.xxx是正常可以引用的实例化变量 但是在class下和def并列的时候,定义 self.XX就不会引用成功 同样,我怀疑在def内,变量加和不加self都不同。 我有点混乱,求指点 |
8
Matrix24 OP @binux
class AAA(): ········self.a='5' ········def go(self): ················pass b=AAA() b.a --------- 为什么不可以在class内和def平行关系,定义self.XXX这种实例化变量? |
9
iEverX 2014-03-02 19:22:15 +08:00
class Example(object):
a = 0 # 定义在类里面,是类的属性 def hello(self): self.c = 3 # def print(self): print self.a, self.c e = Example() e.hello() e.print() # 0 3 |
11
Matrix24 OP @binux 你的意思是说,所有定义的self.XXX是函数内的(self)决定的,突然明白了。哈哈,被打醒了,ThankYou,谢谢你的耐心~~
|
12
wuyadong 2014-03-02 22:30:17 +08:00
....
|
13
Fedor 2014-03-02 22:36:41 +08:00
一个是对象的属性。
一个是方法里的局部变量。 |
14
qianlifeng 2014-03-03 09:15:04 +08:00
self的一个功能就是为了区分对象属性和局部变量?
|
15
Shared 2014-03-03 12:23:10 +08:00 1
@qianlifeng 不是为了区分,而是 self 就是 class 实例化后的对象本身,你把 self 改成别的都无所谓,只不过大家约定的用 self
|