python怎么给类属性赋值 python 类属性

本文详细介绍了在Python中如何在类对象内部和外部绑定类属性,以及访问类属性的方法。区分了实例属性与类属性的访问规则,并通过例子展示了实例属性如何屏蔽同名的类属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类属性

绑定类属性的两种方法

1、在类对象内部方法中,语法格式:


属性名 = 属性值

2、在类对象外部,Python是动态语言,在类对象创建后可对其动态地绑定属性。语法格式:


类对象.属性名 = 属性值

如果指定名称的类属性已经存在,则是对类属性进行修改。

访问类属性的两种方法

1、在类对象内部方法中,语法格式:


类对象.属性名

2、在类对象外部有两种方式,语法格式:


类对象.属性名

实例对象.属性名

类对象的所有实例对象都有一个指向类对象的指针,所以类对象的所有实例对象都可以访问类属性。

类对象绑定实例属性示例

之所以添加前缀"类对象",是为了表明类属性被哪个类对象所绑定。

class MyClass():
# 在类对象内部(方法外)绑定类属性
ca1 = 18
def do_sth(self):
# 在类对象内部(方法中)访问类属性
print(MyClass.ca1)
def do_another(self):
# 在类对象内部(方法中)访问类属性
print(MyClass.ca2)
mc = MyClass()
# 在类对象外部调用方法, 使得在类对象内部(方法中)访问类属性
mc.do_sth()
# 在类对象外部通过类对象访问类属性
print(MyClass.ca1)
# 在类对象外部通过实例对象访问类属性
print(mc.ca1)
# 在类对象外部绑定类属性
MyClass.ca2 = 56
# 在类对象外部通过类对象访问类属性
print(MyClass.ca2)
# 在类对象外部通过实例对象访问类属性
print(mc.ca2)
# 在类对象外部修改绑定的类属性值
MyClass.ca2 = 73
# 在类对象外部通过类对象访问类属性
print(MyClass.ca2)
# 在类独享外部通过实例对象访问类属性
print(mc.ca2)
# 在类对象外部调用方法, 使得在类对象内部访问类属性
mc.do_another()

实例属性与类属性访问区别

访问实例属性和类属性都可以通过实例对象.属性名的方式。当通过实例对象.属性名的方式访问属性时,会先查找指定的实例对象中有没有指定名称的实例属性,如果没有在查找对应的类对象中有没有指定名称的类属性。所以当通过实例对象.属性名的方式访问属性时,如果实例属性和类属性同名,实例属性会屏蔽掉类属性。

当通过实例对象.属性名 = 属性值的方式绑定属性时,这里的属性只表示实例属性(因为类属性没有这样的绑定方式),所以,只会查找指定的实例对象有没有绑定指定名称的实例属性,如果没有则进行绑定,如果已经绑定则对属性值进行修改。

登录后复制

class Person():
age = 18
p = Person()
# 在实例对象p中没有找到名为age的实例属性,然后在类对象Person中找到了名为age的类属性
print(p.age)
# 打印名为age的类属性
print(Person.age)
# 给实例对象p绑定实例属性
p.age = 19
# 实例属性屏蔽掉了同名的类属性
print(p.age)
# 打印名为age的类属性
print(Person.age)
# 删除实例对象p绑定的实例属性
del p.age
print(p.age)
p1 = Person()
p2 = Person()
p1.age +=2
print(Person.age)
print(p1.age)
print(p2.age)
Person.age +=3
print(Person.age)
print(p1.age)
print(p2.age)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sunxiaopengsun

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

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

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

打赏作者

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

抵扣说明:

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

余额充值