Python面向对象案例汇总
生活随笔
收集整理的這篇文章主要介紹了
Python面向对象案例汇总
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Python面向?qū)ο蟀咐齾R總
簡介
Python是一門面向?qū)ο蟮恼Z言,用這種思想為指導(dǎo)設(shè)計的程序,把數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一起組成類,通過類來創(chuàng)建對象,通過對象之間的交互來實現(xiàn)程序的功能。
定義個空的類
class FirstClass:pass if __name__ == '__main__':c = FirstClass()print(c)#結(jié)果 <__main__.FirstClass object at 0x0000022128E17F70>定義個學(xué)生類(僅屬性)
class Student:# 構(gòu)造方法(初始化),這里傳入name和age兩個參數(shù)def __init__(self,name,age):self.name=nameself.age=ageif __name__ == '__main__':s = Student('沈亮',30);#顯示對象內(nèi)存地址print(s)# 訪問對象里的name和age屬性print("{}您的年齡是:{}歲".format(s.name,s.age))#結(jié)果 <__main__.Student object at 0x0000022C7CAF7700> 沈亮您的年齡是:30歲定義個學(xué)生類(屬性及方法)
class Student:# 構(gòu)造方法(初始化),這里傳入name和age兩個參數(shù)def __init__(self,name,age):self.name=nameself.age=agedef sayInfo(self): #通過對象里的方法訪問name和age屬性print("{}您的年齡是:{}歲".format(s.name, s.age))if __name__ == '__main__':s = Student('沈亮',30);#顯示對象內(nèi)存地址print(s)# 訪問對象方法s.sayInfo()#結(jié)果 <__main__.Student object at 0x000001C7F6A47700> 沈亮您的年齡是:30歲方法內(nèi)嵌套類
#方法里嵌套Converter類,如果該對象不存在則創(chuàng)建,最終函數(shù)通過Converter對象里的convert方法返回(完成分數(shù)和等級的轉(zhuǎn)換) def score2level(score,converter=None):class Converter:def convert(self,score):level='C'if score>=80:level='A'elif 60<score <80:level = 'B'return levelif not converter:c = Converter()return c.convert(score)if __name__ == '__main__':score=75print("您的分數(shù)是{0},對應(yīng)的等級是{1}".format(score,score2level(score)))#結(jié)果 您的分數(shù)是75,對應(yīng)的等級是B計算二維平面里點到點距離
import math class Point:#初始化點的坐標(biāo),默認在原點(即x=0,y=0)def __init__(self,x=0,y=0):self.move(x,y)#設(shè)置點的坐標(biāo)為(x,y)def move(self,x,y):self.x=xself.y=y#將點的坐標(biāo)重置到(0,0)def reset(self):self.move(0,0)#計算兩點之間的距離(勾股定理)def calculateDistance(self,otherPoint):return math.sqrt(pow((self.x-otherPoint.x),2)+pow((self.y-otherPoint.y),2))if __name__ == '__main__':point1 = Point(3,0)point2 = Point(0,4)#計算點point1和點point2的距離print(point1.calculateDistance(point2))#計算點point3=的橫坐標(biāo)x、縱坐標(biāo)ypoint3=Point(4,6)print(point3.x, point3.y)#重置點point3,即作為為坐標(biāo)原點point3.reset()print(point3.x,point3.y)#結(jié)果 5.0 4 6 0 0私有屬性及私有方法
class Student:# 構(gòu)造方法(初始化),這里傳入name、age、__level三個參數(shù),其中__level是私有屬性def __init__(self,name,age,level):self.name=nameself.age=ageself.__level=leveldef sayInfo(self): #通過對象里的方法訪問name和age屬性print("{}您的年齡是:{}歲".format(self.name, self.age)) #定義私有方法 def __getLevel(self):print("{}您的等級是:{}".format(self.name, self._Student__level))if __name__ == '__main__':s= Student('ShenLiang',25,'A')#訪問私有方法時,需要加_類名__方法名s._Student__getLevel()#結(jié)果 ShenLiang您的等級是:A查看對象的自定義屬性及其值
class Student:# 構(gòu)造方法(初始化),這里傳入name、age、__level三個參數(shù),其中__level是私有屬性def __init__(self,name,age,level):self.name=nameself.age=ageself.__level=leveldef sayInfo(self): #通過對象里的方法訪問name和age屬性print("{}您的年齡是:{}歲".format(self.name, self.age))#定義私有方法def __getLevel(self):print("{}您的等級是:{}".format(self.name, self._Student__level))if __name__ == '__main__':s= Student('ShenLiang',25,'A')# 輸出類里用戶自定義的屬性、方法print([v for v in dir(s) if not v.startswith('__')])# 輸出對象里用戶自定義的屬性及其值for item in vars(s):print(item,":",vars(s)[item])#結(jié)果 ['_Student__getLevel', '_Student__level', 'age', 'name', 'sayInfo'] name : ShenLiang age : 25 _Student__level : A類變量及類方法的使用
class Student:cnt =0# 初始化方法def __init__(self,name,score,level):self.name = nameself.score = scoreself.__level = levelStudent.cnt +=1def sayScore(self): #對象方法操作對象屬性print("{0}\t的分數(shù)是:{1}".format(self.name,self.__level))def __getLevel(self): #私有方法的定義print("{0}當(dāng)前的等級是:".format(self.name,self.__level))@classmethod #類方法操作類屬性def printCnt(cls):print(cls.cnt) if __name__ == '__main__':s1=Student('Shenliang',30,'A')s2=Student('Liangshen',20,'B')print('當(dāng)前學(xué)生數(shù):\t',Student.cnt)print("對象方式調(diào)用:") #s1和s2對象調(diào)結(jié)果都是2s1.printCnt() #s2.printCnt()#結(jié)果 當(dāng)前學(xué)生數(shù): 2 對象方式調(diào)用: 2靜態(tài)變量的使用
class Student:cnt =0# 初始化方法def __init__(self,name,score,level):self.name = nameself.score = scoreself.__level = levelStudent.cnt +=1def sayScore(self): #對象方法操作對象屬性print("{0}\t的分數(shù)是:{1}".format(self.name,self.__level))def __getLevel(self): #私有方法的定義print("{0}當(dāng)前的等級是:".format(self.name,self.__level))@classmethod #類方法操作類屬性def printCnt(cls):print(cls.cnt)@staticmethoddef add(a,b):return(a+b)if __name__ == '__main__':s1=Student('Shenliang',30,'A')s2=Student('Liangshen',20,'B')print('兩數(shù)相加的結(jié)果是:\t',Student.add(20,30))注:靜態(tài)方法不可以操作對象實例屬性及方法。屬性裝飾器
class Student:cnt =0# 初始化方法def __init__(self,name,score,level):self.name = nameself.score = scoreself.__level = levelStudent.cnt +=1def sayScore(self): #對象方法操作對象屬性print("{0}\t的分數(shù)是:{1}".format(self.name,self.__level))def __getLevel(self): #私有方法的定義print("{0}當(dāng)前的等級是:".format(self.name,self.__level))@propertydef level(self):return self.__levelif __name__ == '__main__':s1=Student('Shenliang',30,'C')print("{0}您的等級是{1}".format(s1.name,s1.level))#結(jié)果 Shenliang您的等級是C總結(jié)
以上是生活随笔為你收集整理的Python面向对象案例汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银行揽储是什么意思
- 下一篇: Strom集群安裝,Python安裝,S