我正在编写一个python(python 2.7)程序。 我想创建一个继承自动态继承自另一个类的类的类。 可以这样做吗?
例如:
class A(Object):
def print_me():
print "A"
class B(Object):
def print_me():
print "B"
class son(<inherits from A or B dynamically, depending on the input>):
pass
class grand_son(son):
pass
我想要的是以下代码:
grand_son("A").print_me()
将打印:
>> A
和以下代码:
grand_son("B").print_me()
将打印:
>> B
可以吗?
感谢。
答案 0 :(得分:2)
您可以使用type()的三个参数形式来动态创建一个类。
这是一个互动演示:
>>> class A(object):
... def print_me(self):
... print "A"
...
>>> class B(object):
... def print_me(self):
... print "B"
...
>>> def getclass(name):
... return {"A":A, "B":B}[name]
...
>>> def getson(parent):
... return type("son", (getclass(parent),), {})
...
>>> son = getson("A")
>>> son().print_me()
A
>>> son = getson("B")
>>> son().print_me()
B
使用此功能,您可以定义grand_son
功能:
>>> def grand_son(grandparent):
... return type("grand_son", (getson(grandparent),), {})
...
>>> grand_son("A")().print_me()
A
>>> grand_son("B")().print_me()
B
>>>