实例属性和类属性

# 修改类的方法:
1,Person.country = '日本' 通过类名来修改
2,p.__class__.country = '日本' 通过实例进行修改(也是要先获取类,本质还是通过类进行修改)

# 实例可以访问类属性,但不能修改,(通过实例修改类属性,会给实例添加新的属性,不是修改,可用p.__dict__查看)

class Person(object):
country = '中国'

def __init__(self, name, age):
self.name = name
self.age = age


p =Person('李四', 24)
print(p.name)

p.name = '张三' #实例属性可以修改 没有该属性就是添加

print(p.country) #访问类属性

# print(p.__dict__)
# p.country = '美国' #对象不能修改类属性,这样会添加一个实例属性
# print(p.__dict__)

#修改类属性,不需要通过实例
Person.country = '日本'
print(p.country) #如果实例有该属性,访问的是实例属性,不是才会去查找类属性

#修改类的私有属性
print(Person.__dict__) #查看包装后的名称,然后在修改(非常规手段)
Person._Person__sink_color = '白种人'

print(p.__class__) #通过对象获取类属性
p.__class__.country = '加拿大'
print(Person.__dict__)

原文地址:https://www.cnblogs.com/wjun0/p/11515404.html