在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)
答案 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