python面向对象——属性声明位置

属性声明位置:
1. 已知:属性声明在__init__()方法中,成员属性,每个创建的对象 这些属性数据独立的。
2. 属性声明在类型中,方法外。所有对象都能访问但是不能直接修改的数据。
专门定义所有对象访问的公共数据
3. 属性{不能称为属性~变量}声明在类型外部!全局变量
任何类型创建的对象都能访问的数据。

成员属性[对象]-> 类属性[当前类型的所有对象]-> 全局变量[所有对象]
class Person:
	# 类属性
	max_age = 150
	
	def __init__(self, name):
		# 成员属性
		self.name = name
		# 扩展属性
		self.age = 150

# 成员属性:成员~对象,成员属性就是对象的属性,每个对象的属性数据都是互相独立的。
p1 = Person("tom")
p2 = Person("jerry")
print(p1.name) # tom
print(p2.name) # jerry

# 扩展属性,可以修改
print(p1.age) # 150
print(p2.age) # 150

p1.age = 120 
print(p1.age) # 120
p2.age = 100
print(p2.age) # 100

# 类属性,由该类创建的所有对象都可以访问,但是不能修改
p1.max_age = 99 # 扩展属性,和类属性同名,但不一样
print(p1.max_age) #输出的扩展属性 99
print(p2.max_age) # 类属性 150

# 类型可以修改类属性,影响所有对象的访问结果
Person.max_age = 120 
print(p1.max_age) #输出的扩展属性 99
print(p2.max_age) #更改后的类属性 120

类属性:为什么可以让类型修改,不能让对象修改?

面试题

~类型可以创建属于该类型的所有对象,类型可以修改影响所有对象的类属性数据。
# 对象和对象之间的数据都是独立的,对象不能操作影响其他对象的数据,类属性就是这样的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值