实例属性和类属性

定义实例属性的方法

  • 实例绑定实例属性
  • 通过self变量对属性进行绑定

定义类属性的方法

在类中直接定义类属性

属性同名时候的优先级

实例属性的访问优先大于类属性

知识点总结

在Python中,实例属性(Instance Attributes)和类属性(Class Attributes)是两种不同类型的属性,它们分别属于类的实例和类本身。

  1. 实例属性(Instance Attributes)

    • 实例属性是属于类的实例的特定数据,每个实例都可以有不同的实例属性值。
    • 实例属性通常在类的__init__方法中初始化,也可以在实例创建后随时添加和修改。
    • 访问实例属性需要通过实例本身,使用点运算符(.)来访问。

    例如:

    class Person:
        def __init__(self, name, age):
            self.name = name  # 实例属性
            self.age = age    # 实例属性
    
    john = Person("John Doe", 30)
    print(john.name)  # 输出: John Doe
    print(john.age)   # 输出: 30
    
  2. 类属性(Class Attributes)

    • 类属性是属于类本身的属性,它在所有实例之间共享相同的值。
    • 类属性通常在类的定义中直接定义在类体中。
    • 类属性可以通过类名或实例访问,但通常建议通过类名访问以清晰表达该属性是属于类的。

    例如:

    class Person:
        species = "Homo sapiens"  # 类属性
    
        def __init__(self, name, age):
            self.name = name        # 实例属性
            self.age = age          # 实例属性
    
    john = Person("John Doe", 30)
    print(john.species)  # 输出: Homo sapiens
    print(Person.species)  # 输出: Homo sapiens
    

    在这个例子中,species是一个类属性,所有属于Person类的实例共享相同的species值。

需要注意的是,当实例和类都拥有同名属性时,实例属性会覆盖类属性:

class Person:
    species = "Homo sapiens"  # 类属性

    def __init__(self, name, age):
        self.name = name        # 实例属性
        self.age = age          # 实例属性
        self.species = "Homo erectus"  # 同名实例属性

john = Person("John Doe", 30)
print(john.species)  # 输出: Homo erectus

在上面的例子中,john.species访问的是实例属性,而不是类属性,因此它的值是"Homo erectus",而不是"Homo sapiens"

总结来说,实例属性属于类的实例,每个实例都有自己的值。类属性属于类本身,所有实例共享相同的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王摇摆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值