python:类属性与实例属性,类方法、实例方法与静态方法

前面讲解了python里类的定义和特性等,此次讲解类属性与实例属性,类方法与实例方法,照样用例子说明。

一、类属性

类属性是直接定义在类中的属性,通常用于存储类的全局数据(配置、常量等)。类属性所有实例共享,通过实例和类名都可以访问,但不能通过实例来修改,否则会生成一个和类属性名字一样的实例属性(类属性只能通过 “类名.类属性名” 作修改)。通过实例和类名都可以访问。

例:
class animal():
    count=0   #类属性
     。。。
    animal.count+=1   #正确:修改类属性

dog=animal()
print(animal.count)    #打印类属性(通过类访问)
print(dog.count)       #打印类属性(通过实例访问)
dog.count=4   #错误:不能通过对象修改类属性

二、实例属性

init 方法中通过“”self.属性名 ”定义,修改某个实例属性不会影响到其它实例属性,只能通过 “实例.属性名” 访问。

例:
class animal():
    def __init__(self,name,age):
        self.name=name   #实例属性
        self.age=age       #实例属性
dog=animal('mimi',3)      #创建对象
print(dog.name,dog.age)    #打印实例属性(实例访问)

三、类方法

使用@classmethod 装饰器,第一个参数是cls,只能直接访问和修改类属性,不能直接访问实例属性(除非传入实例,一般不这样用);通过实例和类名都可以调用类方法。

例:
class animal():
 def __init__(self,name):
        self.name=name   #实例属性
@classmethod    #装饰器
    def call(cls,dog):   #类方法,传入了实例dog
        print(dog.name)  #通过传入实例访问到实例属性name(不推荐)
        print(f'喵喵叫。。。')
dog=animal()             #创建对象
animal.call('mimi')   #通过类调用类方法
dog.call('mimi')   #通过实例调用类方法(不推荐)

四、实例方法

最常用的方法类型。第一个参数是self,用于操作(访问和修改)实例属性;需要(只能)通过 “实例.实例方法名()”调用。

例:
class animal():
    def feature(self):    #实例方法,第一个参数是self
        print(f'{self.name}是只可爱的猫咪')
dog=animal()     #创建对象
dog.feature()    #通过实例调用

五、静态方法

使用 @staticmethod 装饰器,没有 self 或 cls 参数。通常用于工具函数(与类相关但不依赖于类状态),可以通过 “类名.静态方法名()” 和 "实例名.静态方法名()” 两种方法访问。

class animal():
    @staticmethod   #装饰器
    def message():         #静态方法,无参数
        print('一些动物名:')
        print('猴子')
        print('狮子')
        print('狗')
dog=animal()          #创建对象
animal.message()      #通过类调用静态方法
dog.message()          #通过实例调用静态方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值