我该如何使用Mixin来获取数据,这些数据会不断变化,并流经我的其他类,这样我就可以访问这些数据,而不必从所有类/对象中的一个类实例中关联到它呢?在
示例
class DataMixin(object):
data = {}
def change_data(self, data=None):
"""
HERE I AM TRYING TO ASSIGN data TO THE MIXIN ITSELF SO ALL CLASSES
USING THIS MIXIN RECEIVE THE SAME UPDATED data FIELD
"""
super(DataMixin, self).data = data
dm = DataMixin()
# EDIT. Moved Below line lower.
# dm.change_data(data={'new': 'data'})
class Class1(DataMixin, object):
def __init__(self):
self.data = super(Class1, self).data
class Class2(DataMixin, object):
def __init__(self):
self.data = super(Class2, self).data
c1 = Class1()
c2 = Class2()
# EDIT. MOVED TO HERE.
dm.change_data(data={'new': 'data'})
print "c1: {}".format(c1.data)
print "c2: {}".format(c2.data)
上面的代码打印:
c1: {}
c2: {}
我要打印:
c1: {'new': 'data'}
c2: {'new': 'data'}
有没有一种方法可以使用mixin来完成上述操作? “或” 我需要更好的方法吗?请解释一下是否应该做得更好。在
干杯。。。在
这是因为dm是DataMixin和c1类的实例,c2不能从实例继承数据值。如果你想要c1,c2从父类DataMixin继承属性'data',您可以像这样将函数更改为classmethod
相关问题 更多 >
编程相关推荐