1.类属性
"""
对象(实例对象): 通过class定义的类创建的, 即通过类实例化来的, 又称为实例, 实例对象
实例对象定义的属性称为是 实例属性. 通过实例对象(self) 定义的属性都是实例属性
实例属性: 每个实例对象中都存在一份,并且值可能是不一样的
类(类对象): 通过class定义的,又称为 类对象, 是python解释器在创建类的时候自动创建的
作用: 1. 通过类对象,去定义实例对象 2. 类对象可以保存一些属性信息,称为类属性
类属性的定义: 在类内部,方法外部定义的变量就是类属性
类属性,字内存中只有一份
如何确定一个属性是该定义为实例属性还是类属性?
先假设这个属性为实例属性,查看这个属性值对于不同的实例对象, 属性值是否都一样,并且需要同时变化.
如果是, 则可以定义为类属性
如果不是,则可以定义为实例属性
"""
class Dog(object):
class_name = '狗类'
def __init__(self, name, age):
self.name = name
self.age = age
dog = Dog('大黄', 2)
print(Dog.class_name)
Dog.class_name = 'Dog类'
print(Dog.class_name)
print(dog.class_name)
2.实例属性(对象属性)
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)
3.通过实例(对象)去修改类属性
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)
总结
- 如果需要在类外修改类属性,必须通过类对象去引用然后进行修改。如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性。