【发布时间】:2015-07-03 17:34:29
【问题描述】:
我有兴趣创建一个包含各种 mixin 的类层次结构 在对象中创建槽:
class A(object, Keyable, Taggable):
"""A is keyable and taggable."""
def __init__(self):
super(A, self).__init__()
print "A"
class B(BodyText, Valuable):
"""B is everything a A is, plus Valuable"""
def __init__(self):
super(B, self).__init__()
print "B"
class C(BodyKey, Posable):
"""C is everything a B is, plus Posable"""
def __init__(self):
super(C, self).__init__()
print "C"
但是,当我尝试运行此代码时(以及下面的 mixins) 我收到错误“””无法创建一致的方法解决方案 基类 Keyable、Taggable、对象 """ 的顺序 (MRO)
如果有不同的方式来实现我的目标(例如作文 或其他)我对此持开放态度。
# BEGIN MIXINS
class Posable(object):
def __init__(self):
super(Posable, self).__init__()
self.pos = 0
print "POSABLE"
class Keyable(object):
def __init__(self):
super(Keyable, self).__init__()
self.key = ''
print "KEYABLE"
class Taggable(object):
def __init__(self):
super(Taggable, self).__init__()
self.tag = ''
print "TAGGABLE"
class Valuable(object):
def __init__(self):
super(Valuable, self).__init__()
self.val = 0
print "VALUABLE"
# END MIXINS
【问题讨论】:
-
您根本不需要从 A 类中的对象继承。另请注意,您的问题中没有定义 BodyText 和 BodyKey。
标签: python oop multiple-inheritance mixins