Python面向对象案例汇总
生活随笔
收集整理的这篇文章主要介绍了
Python面向对象案例汇总
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
Python面向对象案例汇总
简介
Python是一门面向对象的语言,用这种思想为指导设计的程序,把数据和对数据的操作封装在一起组成类,通过类来创建对象,通过对象之间的交互来实现程序的功能。
定义个空的类
class FirstClass:pass if __name__ == '__main__':c = FirstClass()print(c)#结果 <__main__.FirstClass object at 0x0000022128E17F70>定义个学生类(仅属性)
class Student:# 构造方法(初始化),这里传入name和age两个参数def __init__(self,name,age):self.name=nameself.age=ageif __name__ == '__main__':s = Student('沈亮',30);#显示对象内存地址print(s)# 访问对象里的name和age属性print("{}您的年龄是:{}岁".format(s.name,s.age))#结果 <__main__.Student object at 0x0000022C7CAF7700> 沈亮您的年龄是:30岁定义个学生类(属性及方法)
class Student:# 构造方法(初始化),这里传入name和age两个参数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);#显示对象内存地址print(s)# 访问对象方法s.sayInfo()#结果 <__main__.Student object at 0x000001C7F6A47700> 沈亮您的年龄是:30岁方法内嵌套类
#方法里嵌套Converter类,如果该对象不存在则创建,最终函数通过Converter对象里的convert方法返回(完成分数和等级的转换) 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("您的分数是{0},对应的等级是{1}".format(score,score2level(score)))#结果 您的分数是75,对应的等级是B计算二维平面里点到点距离
import math class Point:#初始化点的坐标,默认在原点(即x=0,y=0)def __init__(self,x=0,y=0):self.move(x,y)#设置点的坐标为(x,y)def move(self,x,y):self.x=xself.y=y#将点的坐标重置到(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=的横坐标x、纵坐标ypoint3=Point(4,6)print(point3.x, point3.y)#重置点point3,即作为为坐标原点point3.reset()print(point3.x,point3.y)#结果 5.0 4 6 0 0私有属性及私有方法
class Student:# 构造方法(初始化),这里传入name、age、__level三个参数,其中__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()#结果 ShenLiang您的等级是:A查看对象的自定义属性及其值
class Student:# 构造方法(初始化),这里传入name、age、__level三个参数,其中__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])#结果 ['_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的分数是:{1}".format(self.name,self.__level))def __getLevel(self): #私有方法的定义print("{0}当前的等级是:".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('当前学生数:\t',Student.cnt)print("对象方式调用:") #s1和s2对象调结果都是2s1.printCnt() #s2.printCnt()#结果 当前学生数: 2 对象方式调用: 2静态变量的使用
class Student:cnt =0# 初始化方法def __init__(self,name,score,level):self.name = nameself.score = scoreself.__level = levelStudent.cnt +=1def sayScore(self): #对象方法操作对象属性print("{0}\t的分数是:{1}".format(self.name,self.__level))def __getLevel(self): #私有方法的定义print("{0}当前的等级是:".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('两数相加的结果是:\t',Student.add(20,30))注:静态方法不可以操作对象实例属性及方法。属性装饰器
class Student:cnt =0# 初始化方法def __init__(self,name,score,level):self.name = nameself.score = scoreself.__level = levelStudent.cnt +=1def sayScore(self): #对象方法操作对象属性print("{0}\t的分数是:{1}".format(self.name,self.__level))def __getLevel(self): #私有方法的定义print("{0}当前的等级是:".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))#结果 Shenliang您的等级是C总结
以上是生活随笔为你收集整理的Python面向对象案例汇总的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 银行揽储是什么意思
- 下一篇: Strom集群安裝,Python安裝,S