作者:云上的浮游_154 | 来源:互联网 | 2022-12-18 17:47
先看图理解:类属性就相当与全局变量,实例对象共有的属性,实例对象的属性为实例对象自己私有。类属性就是类对象(Tool)所拥有的属性,它被所有类对象的实例对象(实例方法)所共有,在内存
先看图理解:
类属性就相当与全局变量,实例对象共有的属性,实例对象的属性为实例对象自己私有。
类属性就是类对象
(Tool)所拥有的属性,它被所有类对象
的实例对象(实例方法)
所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似。对于公有的类属性,在类外可以通过类对象
和实例对象
访问
类属性
class People(object):
name = 'Tom'
__age = 12
p = People()
print(p.name)
print(People.name)
print(p.__age)
print(People.__age)
实例属性(对象属性)
class People(object):
address = '山东'
def __init__(self):
self.name = 'xiaowang'
self.age = 20
p = People()
p.age =12
print(p.address)
print(p.name)
print(p.age)
print(People.address)
print(People.name)
print(People.age)
通过实例(对象)去修改类属性
class People(object):
country = 'china'
print(People.country)
p = People()
print(p.country)
p.country = 'japan'
print(p.country)
print(People.country)
del p.country
print(p.country)
总结
- 如果需要在类外修改
类属性
,必须通过类对象
去引用然后进行修改。如果通过实例对象去引用,会产生一个同名的实例属性
,这种方式修改的是实例属性
,不会影响到类属性
,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性
,除非删除了该实例属性
。