欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python知识点:类属性/实例属性理解

程序员文章站 2024-02-22 23:01:16
...

首先理解下类对象/实例对象:

class People(object):  # 类对象
    pass

# 生成实例对象p
p = People()  

其次,再理解类属性:

class P(object):
    name = 'T'     #公有的类属性
    __age = 1     #私有的类属性

p1 = P()

print(p1.name)      #正确
print(P.name)      #正确
print(p1.__age)     #错误,不能在类外通过实例对象访问私有的类属性
print(P.__age)     #错误,不能在类外通过类对象访问私有的类属性

实例属性(对象属性):

class People(object):
    address = '唐' #类属性
    def __init__(self):
        self.name = 'ss' #实例属性
        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)
输出结果为:
china
china
japan
china
china

总结:

如果需要在类外修改类属性,必须通过类对象去引用然后进行修改。如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性。