Python面向对象案例汇总

Python面向对象案例汇总,第1张

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=name
        self.age=age

if __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=name
        self.age=age
    def 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
计算二维平面里点到点距离
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=x
        self.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、纵坐标y
    point3=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=name
        self.age=age
        self.__level=level
    def 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=name
        self.age=age
        self.__level=level
    def 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 = name
        self.score = score
        self.__level = level
        Student.cnt +=1
    def 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对象调结果都是2
    s1.printCnt() #s2.printCnt()

#结果
当前学生数:	 2
对象方式调用:
2
静态变量的使用
class Student:
    cnt =0
    # 初始化方法
    def __init__(self,name,score,level):
        self.name = name
        self.score = score
        self.__level = level
        Student.cnt +=1
    def 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)
    @staticmethod
    def 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 = name
        self.score = score
        self.__level = level
        Student.cnt +=1
    def sayScore(self): #对象方法 *** 作对象属性
        print("{0}\t的分数是:{1}".format(self.name,self.__level))

    def __getLevel(self): #私有方法的定义
        print("{0}当前的等级是:".format(self.name,self.__level))

    @property
    def level(self):
        return self.__level

if __name__ == '__main__':
    s1=Student('Shenliang',30,'C')
    print("{0}您的等级是{1}".format(s1.name,s1.level))

#结果
Shenliang您的等级是C

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/578036.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)