【发布时间】:2017-08-02 03:01:19
【问题描述】:
说我有一个
class A:
def __init__(self, *args):
pass
我想要一个复制 A 的定义并用新类扩展它的装饰器。
def decorator(cls): # some decorator here
# make a new class which inherits from A
# return it while preserving the original A
这可能吗? (PS:这是为了避免维护问题。)
【问题讨论】:
-
你确定你想要一个新的类,而不是简单地“装饰”现有的类吗?这称为猴子修补,这是一种常见的模式。
-
@HubertGrzeskowiak,是的,我需要两个不同的课程。
-
是否需要通过装饰器或者创建一个子类就足够了?
class ChildClassName (ParentClass1[, ParentClass2, ...]): -
@DavyM,不,它没有。但是我有很多
As,所以为每个创建一个不太可维护。 -
如果你只想要一个单行来创建一个子类,你可以实例化基元类
type。只需执行SA = type('SA', (A,), {}),但如果您解释为什么需要这样做,可能会有更好的解决方案。