Python面向对象案例汇总

Posted ShenLiang2025

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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=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<score <80:
                level = 'B'
            return level
    if not converter:
        c = Converter()
    return c.convert(score)




if __name__ == '__main__':
    score=75
    print("您的分数是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=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

以上是关于Python面向对象案例汇总的主要内容,如果未能解决你的问题,请参考以下文章

Python面向对象案例汇总

Python_类和对象_自定义类与属性

Java面向对象超简单例子——三维坐标

Python如何移动CAD ucs原点的位置?

python之面向对象知识点汇总(小白必会)

Python 面向对象的核心概念汇总