python - 在方法调用中获取当前类

标签 python inheritance

class A:
    def x ( self ):
        print( self.__class__ )

class B ( A ):
    pass

b = B()
b.x()

在上述情况下,有没有办法让方法x获取对类A的引用而不是B?当然,简单地编写 print( A ) 是不允许的,因为我想使用需要类 A 的装饰器添加一些功能(并且因为我无法传递 A本身直接传递给装饰器,因为此时该类还不存在)。

最佳答案

除非您涉及 super 调用(或者更常见的是覆盖 x 的子类并直接调用 A.x(self) 作为他们的覆盖实现),在 type(self).mro() 中查找第一个具有 x 属性的项目可以工作 --

next(c for c in type(self).mro() if hasattr(c, 'x'))

如果您确实需要覆盖 super 调用,那就更难了——除非您碰巧知道 A 没有 super 类> 定义了一个 x 属性(当然,了解你的父类(super class)比了解你的子类更容易,尽管多重继承确实会使它变得复杂;-)在这种情况下,你只需要 last mro 的适当项目而不是第一个。

关于python - 在方法调用中获取当前类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3848033/

相关文章:

python - keras 移动网络

c++ - 打印出继承的结构化列表c++

c# - 如何保护基场的公共(public)/私有(private)

bash (Linux) 中的 Python3.4 不提供文本着色

Python:由for循环引起的围栏帖子

python - 将回调 uri 放入 Oauth 请求中

c++ - 调用派生类的函数调用操作符时避免使用指针

Java:继承、实例变量和 this

带有 IUnityContainer 的 WPF MVVM 创建不需要的多个实例

python - 在 OS X 上的 Python 上运行 32 位库和二进制文件