关于类的实例方法、静态方法、类方法的用途,使用代码解释说明

本文详细介绍了Python中的类方法、实例方法和静态方法的区别与使用场景,通过一个带有计数器功能的矩形类示例,展示了它们在管理类属性和实例属性时的不同行为。同时,文章还涉及了属性访问、方法调用规则以及属性封装与验证。
摘要由CSDN通过智能技术生成

经过研究个人总结如下,如有不对欢迎留言讨论:
1、类方法,用来管理类属性,类和实例都可以访问,调用返回值没有区别
2、实例方法,用来管理实例属性,实例访问
3、静态方法,用来作为类里面的工具箱,类和实例都可以访问
另外
1.类属性只有通过类名.属性名来修改,并且会影响所有的实例对象。而通过实例.类属性名修改,只影响实例的属性值,而类属性或其他子类对象值不变
2.实例属性,只能通过实例.属性名访问,不能用类名.属性名访问
3.实例方法可以通过类和实例.方法名访问,但是:
实例.方法名()调用时候,会自动传递实例对象作为self传入
类名.方法名 ()调用时候,需要手动传入实例对象,否则报错

# 创建一个带计数器功能的矩形类
class Rectangle():
    __count_num=0#定义一个私有类属性用来计数,因为是类属性故类和每个实例对象中都会有这个属性
    def __init__(self,height,width):
        '''
        初始化矩形类,有两个参数:
        height:高度
        width:宽度
        两个参数均设置为私有,又由于其在实例方法中,故为私有实例属性
        '''
        self.__height=height
        self.__width=width
        self.__count=self.__count_result()#计数器也设置为私有对象属性
        '''使用类方法实现计数,如果去掉这行,直接用实例.
        方法名调用计数,会发现每调用一次方法就加一,而
        不是每实例化一次加一,会导致错误'''
    # 设置一个静态方法用于判断数字是否大于0,相当于类中工具箱中的一种工具,用于其他方法设置数值时进行判断
    @staticmethod
    def value_check(num):
        if num>0:
            return num
        else:
            raise ValueError('请输入一个大于零的数字')
    # 对两个私有实例属性使用property进行设置
    @property#使用property封装后,实现只可访问,不能修改
    def count(self):
        return self.__count
    @property
    def height(self):
        return self.__height
    @height.setter
    def height(self,value):
        self.__height=self.value_check(value)#使用静态方法value_check对数值进行验证判断
    @property
    def width(self):
        return self.__width
    @width.setter
    def width(self,value):
        self.__width=self.value_check(value)#使用静态方法value_check对数值进行验证判断
    # 接下来实现计数功能,由于是对私有类属性进行变更,故使用类方法
    @classmethod
    def __count_result(cls):#此处设置为私有方法避免从实例访问,否则每访问一次就会导致加一
        cls.__count_num+=1
        return cls.__count_num
r1=Rectangle(10,20)
r2=Rectangle(20,30)
# r1.count=10 #如果不将count设置为私有,那么一旦这里重新赋值就会导致计数器错误
print(r1.count)
print(r1.count)
print(r1.count)
print(r2.count)
print(r2.count)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值