python中在class声明里面定义一个属性,那么该类的所有实例都将拥有这个这个属性,并且如果实例的方法或是属性与类属性重名,那么实例的方法和属性会覆盖类属性和方法
但是,但是对于继承dict类的class却有点不同,类属性不会被实例属性所覆盖,这个地方不知道理解的对不对,暂时先记下了
普通的类
class stu():
def __init__(self, id):
self.id = id
id = 0
a = stu(123)
print(a.id)
#print 1
继承了dict的类
class stu(dict):
def __init__(self, **kw):
super().__init__(**kw)
def __getattr__(self, key):
try:
return self[key]
except AttributeError:
raise r"don't have this key: %s" % key
def __setattr__(self, key, value):
self[key] = value
id = 0
name = 'hhh'
score = 1
a = stu(id = 123, name = 'john')
print(a.id)
print(a.name)
print(a.score)
#print 0 hhh 1