获取基类的名称?

时间:2016-01-06 13:58:09

标签: python class oop

在Python中我定义了一个类:

class Myclass(BaseModule):

我想打印参数BaseModule

这样的事情:

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

不起作用:

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

4 个答案:

答案 0 :(得分:4)

您可以使用以下命令访问该班级的名称:

BaseModule.__name__

答案 1 :(得分:1)

就像错误说的那样,你需要首先实例化(创建一个BaseModule实例)。

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

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

答案 2 :(得分:0)

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

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'

答案 3 :(得分:0)

首先,你可以在这里找到答案: solution source

    >>> 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