免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: tianyaamy
打印 上一主题 下一主题

python里面的self和_int_具体作用和怎么理解它们? [复制链接]

论坛徽章:
0
1 [报告]
发表于 2006-11-29 09:00 |显示全部楼层
楼上的各位,还是好好看看那个dive into python再来发言吧。
ps:5.3 类的初始化

论坛徽章:
0
2 [报告]
发表于 2006-11-29 15:36 |显示全部楼层
原帖由 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'.
如果再不懂,我建议你还是看书吧,多看几遍。(也许我说的还不是很清楚 :)

论坛徽章:
0
3 [报告]
发表于 2006-11-29 15:40 |显示全部楼层
CU是一个自由的论坛,我认为,但是不要意气用事,高手很多,当然我也不会贴一段英文的东西来证明什么的。因为对象我这样的新手来说,可能理解有点难哦。不过还是非常感谢l4kernel
没有你的鞭策,可能我还不会理解这么深,谢谢。

论坛徽章:
0
4 [报告]
发表于 2006-11-29 18:46 |显示全部楼层
原帖由 l4kernel 于 2006-11-29 18:22 发表
海天同学,我没有用中文学过计算机,所以不好意思,贴了段英文。

您说了半天,self还是指实例的意思,对self.var的改动影响直接施加于self上。

我昨天路过,顺便纠正一下前面人的错误。您这种半桶水出来吊书 ...


哈哈,楼上的哥们,干嘛发这么大的火啊,有意思吗?没意思!

我在说一遍,cu是个自由的论坛,你可以发表你的见解,但是请不要对别人“旺加评论。”你是很厉害,学计算机没有用过中文,那如果我要说你是半桶水的中国人,你什么感想?

你既然知道的这么多,为什么才回了一句“self不是类本身,而是实例本身。”为什么不给LZ说得全面点那,正人先正己!看来如果按这么推理,你也不就是半桶水吗?

你好像不是版主啊,牛什么呢?没有用中文学过计算机也就这么点本事啊?

论坛徽章:
0
5 [报告]
发表于 2006-11-29 21:12 |显示全部楼层
始作俑者是你,你要不说这不痛不痒的话,谁会发火呢?我只是按照你的逻辑去给你推理而已,我又没像你一样乱指责别人,也没有说你说得有错啊?只不过第一贴的时候把你也给包括上了,不好意思。
这个帖子就此打住吧,以后有什么不懂的还得向您请教呢?呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP