实例属性和类属性
a.定义的位置不同:类属性直接定义在类中,实例属性定义在构造函数中
b.访问方式不同:实例属性必须用对象访问,类属性可以使用类名或者对象访问
c.在内存中出现的时机不同:类属性随着类的出现而出现,实例属性随着对象的出现而出现【在代码中,类优先于对象出现的】
d.调用的优先级不同:如果类属性和实例属性重名的情况下,对象优先调用实例属性
代码演示:
class Person(object): #1.定义的位置不同 # 类属性:直接定义在类中 name = "abc" num = 10 #实例属性:定义在构造函数中 def __init__(self,name): self.name = name #2.调用的方式 #类属性:对象.属性 或者 类名.属性 #实例属性;对象.属性 p = Person("javk") #3.优先级不同:实例属性的优先级高 print(p.name) print(Person.name) del p.name print(p.name) print(p.num) #总结;如果是多个对象的共享数据,则定义为类属性,如果是对象特有的数据,则定义为实例属性 #注意:尽量避免类属性和实例属性重名