使用类与对象的变量

北京权威白癜风专科医院 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的概念类似。

预览时标签不可点收录于话题#个上一篇下一篇



转载请注明地址:http://www.sanbaicaoasb.com/scls/7533.html
  • 上一篇文章:
  • 下一篇文章:
  • 热点文章

    • 没有热点文章

    推荐文章

    • 没有推荐文章