- 论坛徽章:
- 0
|
原帖由 l4kernel 于 2006-11-29 11:33 发表
这种回答最搞笑,知道就说出来,不知道就不要指点“你去看某家书再来”
(learning python)
...the first argument (called self by convention) references the instance object being processed; assign ...
楼上的兄弟,其实我觉得多看几遍书是没有什么坏处的啊,书读多便,其意自现!这个道理不明白吗?
ps:顺便说一下我对这个self和__init__的理解:
class Person:
def _init_(self,name):
self.name=name
def sayhello(self):
print 'My name is:',self.name
p=Person('tianya')
print p
self:是指向你新创建对象实例的引用,在这个地方指向你创建的Person类的实例p。当你调用Person类创建实例时,self指的就是你这个P,所以这个地方p=Person('tianya')应该为:p=Person(self,'tianya'),只不过Python自动替你加上而已。:),当你用init进行初始化时,那个self.name实际上就会被p.name所代替,同样在sayhello的那个print中“print 'My name is:',p.name”如果没有self,那么指向Person类的实例P的引用如何才能调用呢?
__init__:是在类的实例被创建后才被调用的,只要用于初始化一个类的实例。当然一个类也可以没有__init__的,上面的例子中,当你创建了p以后,这个__init__会被立刻调用,会执行P.name=name,所以当你执行p=Person('tianya')时,“tianya”会被当作参数传到__init__中,执行P.name='ianya',如果你执行p.name 或者print p.name 则会显示:’tianya‘.
不知道你明白了没有啊?
另外那个self.name相当与是创建了一个数据属性(实例的变量)。变量名是name,值是你传进来的那个'tianya'.
如果再不懂,我建议你还是看书吧,多看几遍。(也许我说的还不是很清楚 :) |
|