关于python:获取基类的名称?

Get base class' name?

在python中,我定义了一个类:

1
class Myclass(BaseModule):

我想打印参数BaseModule

像这样:

1
2
class Myclass(BaseModule):
     logger.info("Argument=%s" % BaseModule.get_name())

不起作用:

1
2
unbound method get_name() must be called with BaseModule instance as
first argument (got nothing instead)


您可以通过以下方式访问类的名称:

1
BaseModule.__name__


正如错误所说,您需要先实例化(创建)basemodule的实例。

1
2
3
4
class MyClass(BaseModule):
    def __init__(self):
        base_mod = BaseModule()
        logger.info("Argument=%s", base_mod.get_name())

它不是一个参数,它是MyClass继承自的父类。例如,论点是来自__init__self。了解正确的术语很重要,以避免以后混淆。


首先,您可以在这里找到您的答案:解决方案源

1
2
3
4
5
6
7
8
9
10
11
    >>> 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


如果要调用超类方法,可以使用super()。但这需要您有一个实例,如果您将日志代码放在那里,就不会有实例。

1
2
3
4
5
6
7
8
9
class Base(object):
    def get_name(self):
        return"Base name"

class Derived(Base):
    def __init__(self):
        print super(Derived, self).get_name()

Derived() # prints 'Base name'