栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python从新手到入门-面向对象续

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python从新手到入门-面向对象续

在上一章中已经介绍了Python类的基本内容。我们将进一步拓展,以便能实际运用对象和类。  

特殊的方法  

__init__方法  

__init__方法在类的一个对象被建立时,马上运行。你可以利用这个方法对对象进行初始化。__init__方法类似于C++、C#和Java中的constructor。(注意:init的两边各有两条下划线)  

[python]viewplaincopy  

classPerson:  

def__init__(self,name):#在__init__中初始化name  

self.name=name  

defsayHi(self):  

print("大家好,我是人贱人爱的",self.name)  

p=Person("王尼玛")  

p.sayHi()  

__del__方法  

__del__在对象消逝的时候被调用。对象消逝即对象不再被使用,它所占用的内存将返回给系统作它用。__del__方法与destructor的概念类似。  

[python]viewplaincopy  

classPerson:  

'''''Representsaperson.'''#通过Person.__doc__查看  

population=0  

def__init__(self,name):  

'''''Initializestheperson'sdata.'''  

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:  

print('Iamthelastone.')  

else:  

print('Therearestill%dpeopleleft.'%Person.population)  

defsayHi(self):#可通过Person.sayHi.__doc__查看  

'''''Greetingbytheperson.  

Really,that'sallitdoes.'''  

print('Hi,mynameis%s.'%self.name)  

defhowMany(self):  

'''''Printsthecurrentpopulation.'''  

ifPerson.population==1:  

print('Iamtheonlypersonhere.')  

else:  

print('Wehave%dpersonshere.'%Person.population)  

swaroop=Person('Swaroop')  

swaroop.sayHi()  

swaroop.howMany()  

kalam=Person('AbdulKalam')  

kalam.sayHi()  

kalam.howMany()  

print(kalam.name)#对象变量  

swaroop.sayHi()  

swaroop.howMany()  

print(swaroop.name)  

输出  

[python]viewplaincopy  

(InitializingSwaroop)  

Hi,mynameisSwaroop.  

Iamtheonlypersonhere.  

(InitializingAbdulKalam)  

Hi,mynameisAbdulKalam.  

Wehave2personshere.  

AbdulKalam  

Hi,mynameisSwaroop.  

Wehave2personshere.  

Swaroop  

小提示  

1.类成员的访问权限  

Python中所有的类成员都是公共的,所有的方法都是有效的。  

只有一个例外:如果你使用的数据成员名称以双下划线前缀比如__privatevar,Python的名称管理体系会有效地把它作为私有变量。  

还有这样就有一个惯例,如果某个变量只想在类或对象中使用,就应该以单下划线前缀。而其他的名称都将作为公共的,可以被其他类/对象使用。记住这只是一个惯例,并不是Python所要求的(与双下划线前缀不同)。  

2.类的变量与对象的变量  

类的变量:由一个类的所有对象(实例)共享使用。当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。(类名.类变量)  

对象的变量:由类的每个对象/实例拥有。因此每个对象有自己对这个域的一份拷贝,即它们不是共享的,在同一个类的不同实例中,虽然对象的变量有相同的名称,但是是互不相关的。(对象名.变量)  

3.print的格式化输出  

支持参数格式化,与C语言的printf类似。  

[python]viewplaincopy  

>>>strHello="thelengthof(%s)is%d"%('HelloWorld',len('HelloWorld'))  

>>>print(strHello)  

输出  

[python]viewplaincopy  

thelengthof(HelloWorld)is11  

[python]viewplaincopy  

>>>print("你好我的名字是%s,我今年%d岁了!"%("王尼玛",2))#注意,字符串与后面变量之间没有逗号!  

输出  

[python]viewplaincopy  

你好我的名字是王尼玛,我今年2岁了!


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/806034.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号