作者ya790206 (残云夺月)
看板Python
标题Re: [问题] 再请教一个问题
时间Sun Apr 27 19:47:46 2008
※ 引述《purestone (天空之子)》之铭言:
: 拜托各位高手指点一下..
: -----------------------------------------
: python 版:
: #!/usr/bin/env python
: # File name: class_init.py
: class Person:
: def __init__(self, name):
: self.name = name
: def say_hi(self):
: print 'Hello, my name is', self.name
: p = Person('Swaroop')
: p.say_hi()
: python 版输出结果:
: $ python class_init.py
: Hello, my name is Swaroop
: -----------------------------------------------
: 请问上述程式的__init__功能是什麽?我知道是初始化,但初始化是什麽?
: self是有什麽涵义吗?为什麽最後一个say_hi()没有self?
: 请问class的功能是什麽?
: 拜托各位高手帮帮忙~我有在看书,但慧根不够,需要有人用白话一点的方式指点一下~
小弟来献丑一下
这不是严谨的说法
类别,你就想成是一种资料形态
这个资料型态拥有属性与方法
在你举的例子中
他的属性是self.name,
严谨的讲是物件的属性,所以不同的物件有不同的self.name
他的方法是say_hi()
方法是定义在类别里的函数
他和一般函数不一样的地方在
当你呼叫方法时,直译器会传自己到那个方法
你的例子p.say_hi()括号内并无东西
但是直译器会把自己p传到say_hi()
所以你在定义say_hi()时,才需要定义成say_hi(self)
你如果没有这样定义,而把他定义成say_hi()
会得到你多传参数给say_hi()的错误
__init__()的作用像是建构子
当物件创造时,会先执行建构子一次
所以你可以利用它做一些初始化的动作
像设定物件属性
希望对你有帮助
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.222.45