1.2 类属性和实例(对象)属性
属性:定义在类中的变量
什么是属性??
表示的是类/对象的特征
特征是别人不具备的
属性分类?
分为类属性和实例属性
- 类属性(又称类变量):这个类的特征,这个群体的特征,别的类(别的群体)可能不具备
- 实例属性(又称实例变量):是个体的特征,类当中的其他成员可能不具备
1.2.1 类属性
类属性是指这个类事物的共同特征
如猫的特性:四条腿、两个耳朵、两只眼睛
类属性的获取:
类名.属性
类属性:可以先天定义也可以后天学习(手动添加)
class Man:
#定义类属性
gender = '男'
power = '强'
print(Man.power) #. 表示的 ,即Man的power属性
print(Man.gender) #Man的gender属性
#后天添加的(手工添加),赋值一个新的类属性
Man.hello = 'hello world'
print(Man.hello)
""" 结果
强
男
hello world
"""
1.2.2 实例属性
实例属性的后天学习获取
一个对象具备一些特征,并不代表其他对象也具备该特征,每个对象的值不一定一样
#如果要所有handsome同一个值,就需要定义类属性class添加
xiaoyi = Man()
xiaoyi.handsome = 'very very good'
print(xiaoyi.handsome)
#very very good
xiaoer = Man()
print(xiaoer.handsome)
# 需要自定义特征
"""结果
AttributeError: 'Man' object has no attribute 'handsome'
"""
1.2.3 类属性和实例属性的区别
class Man:
#定义类属性
gender = '男'
power = '强'
handsome = 'very'
"""
区别一:
类属性是所有对象都有的,但每个对象都可以增加自己特有的属性,这个增加的属性是当前该对象所特有的,其他对象无法获取
#区别一:
#1-1 类属性:所有成员都是一样的
xiaoyi = Man()
xiaoer = Man()
print(xiaoyi.gender)
print(xiaoer.gender)
#1-2 实例属性:不是每个成员不一样
xiaoyi.eye = 'blue'
#print(xiaoer.eye)
"""属性错误,xiaoer没有这个属性
AttributeError: 'Man' object has no attribute 'eye'
"""
区别二:
实例属性自定义特有的属性,类是无法获取的
#区别二:
"""
类属性,具有被实例、对象访问
实例属性,不可以被类获取
"""
print(Man.eye)
"""类里面没有定义eye
AttributeError: type object 'Man' has no attribute 'eye'"""
此处可能会出面试题:
提问类属性和实例属性的区别
先介绍概念,再说区别