Python 获取父类名称?
此代码将打印Python 获取父类名称?,python,oop,Python,Oop,此代码将打印 如何获取定义了方法的类名(即A)?您可以更改 class A(object): def get_class(self): return self.__class__ class B(A): def __init__(self): A.__init__(self) b = B() print b.get_class() 由于文档中没有其他可用的()实例…: 类对象具有\uuuuu name\uuuu属性。通过派生类的\uuuuu
如何获取定义了方法的类名(即A
)?您可以更改
class A(object):
def get_class(self):
return self.__class__
class B(A):
def __init__(self):
A.__init__(self)
b = B()
print b.get_class()
由于文档中没有其他可用的()实例…:
类对象具有\uuuuu name\uuuu
属性。通过派生类的\uuuuu base\uuuu
attr(例如,如果代码要在派生类中存在)内省基类可能会更干净
返回类cls基类的元组,
包括cls,按方法解析顺序。没有一个类比
在这个元组中有一次。请注意,方法的分辨率顺序取决于
cls的类型。除非使用了一个非常特殊的用户定义的元类型,
cls将是元组的第一个元素
结果将是:
import inspect
inspect.getmro(B)
(,)
第一个元素是类本身,第二个元素总是第一个父元素。之后事情会变得更复杂 为什么不简单地
返回一个?你最好检查一下我不认为这个问题是重复的。。。至少不是它所指的那个。一点也不喜欢。我对这个问题的解决方案是:self.\uuuuuu class.\uuuuuu mro.\uuuuu[1]。\uuuuuu name.\uuuuuuu+1对于这一点,也是有用的mro是方法解析顺序。检查这里。
>>> class Base(object):
... pass
...
>>> class Derived(Base):
... def print_base(self):
... for base in self.__class__.__bases__:
... print base.__name__
...
>>> foo = Derived()
>>> foo.print_base()
Base
import inspect
inspect.getmro(B)
(<class '__main__.B'>, <class '__main__.A'>, <type 'object'>)