【发布时间】:2010-10-03 00:18:32
【问题描述】:
class A:
def x ( self ):
print( self.__class__ )
class B ( A ):
pass
b = B()
b.x()
在上述情况下,方法x 有没有办法获得对类A 的引用而不是B?当然简单地写print( A )是不允许的,因为我想用一个需要A类的装饰器添加一些功能(因为我不能直接将A本身传递给装饰器,因为该类不存在到那时)。
【问题讨论】:
-
每次我想这样做时,我最终都意识到我搞砸了类设计或者只是想要一个 Mixin ......也许你的问题是一样的。
-
为什么需要这个?可能这应该是问题。
-
好吧,我很确定我不需要这个;基本上我想要一个自动调用超类方法的方法装饰器。但是,要在 super 调用中使用正确的基类,我需要对 current 对象的引用。不过,我现在已经解决了这个问题,方法是回收我以前的一种(失败的)方法,并用 Alex 的回答中的想法修复它。
标签: python inheritance