北京权威白癜风专科医院 https://baike.baidu.com/item/%E5%8C%97%E4%BA%AC%E4%B8%AD%E7%A7%91%E7%99%BD%E7%99%9C%E9%A3%8E%E5%8C%BB%E9%99%A2/9728824
#!/usr/bin/python
#Filename:objvar.py
classPerson:
Representsaperson.
population=0
def__init__(self,name):
Initializesthepersonsdata.
self.name=name
print(Initializing%s)%self.name
#Whenthispersoniscreated,he/she
#addstothepopulation
Person.population+=1
def__del__(self):
Iamdying.
print%ssaysbye.%self.name
Person.population-=1
ifPerson.population==0:
printIamthelastone.
else:
printTherearestill%dpeopleleft.%Person.population
defsayHi(self):
Greetingbytheperson.
Really,thatsallitdoes.
printHi,mynameis%s.%self.name
defhowMany(self):
Printsthecurrentpopulation.
ifPerson.population==1:
printIamtheonlypersonhere.
else:
printWehave%dpersonshere.%Person.population
swaroop=Person(Swaroop)
swaroop.sayHi()
swaroop.howMany()
kalam=Person(AbdulKalam)
kalam.sayHi()
kalam.howMany()
swaroop.sayHi()
swaroop.howMany()
它如何工作
这是一个很长的例子,但是它有助于说明类
与对象的变量的本质。这里,population属
于Person类,因此是一个类的变量。
name变量属于对象(它使用self赋值)因
此是对象的变量。
观察可以发现init方法用一个名字来初始化
Person实例。在这个方法中,我们让
population增加1,这是因为我们增加了一
个人。同样可以发现,self.name的值根据
每个对象指定,这表明了它作为对象的变量
的本质。
记住,你只能使用self变量来参考同一个对
象的变量和方法。这被称为属性参考。
在这个程序中,我们还看到docstring对于
类和方法同样有用。我们可以在运行时使用
Person.doc和Person.sayHi.doc来分别
访问类与方法的文档字符串。
就如同init方法一样,还有一个特殊的方法
del,它在对象消逝的时候被调用。对象消逝
即对象不再被使用,它所占用的内存将返回
给系统作它用。在这个方法里面,我们只是
简单地把Person.population减1。
当对象不再被使用时,del方法运行,但是
很难保证这个方法究竟在什么时候运行。
如果你想要指明它的运行,你就得使用del
语句,就如同我们在以前的例子中使用的那
样。
给C++/Java/C#程序员的注释
Python中所有的类成员(包括
数据成员)都是公共的,所有
的方法都是有效的。只有一个
例外:如果你使用的数据成员名
称以双下划线前缀比如
privatevar,Python的名称管理
体系会有效地把它作为私有变
量。这样就有一个惯例,如果某
个变量只想在类或对象中使用,
就应该以单下划线前缀。而其他
的名称都将作为公共的,可以被
其他类/对象使用。记住这只是一
个惯例,并不是Python所要求
的(与双下划线前缀不同)。同
样,注意del方法与
destructor的概念类似。
预览时标签不可点收录于话题#个上一篇下一篇