2016-01-06 46 views
1

在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

BaseModule()GET_NAME() –

回答

1

就像錯誤說的,你需要首先實例化(創建一個BaseModule的實例)。

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

而且它不是一個參數,它是一個繼承自MyClass的父類。參數是,例如,self__init__。瞭解正確的術語以避免後期混淆很重要。

4

您可以通過訪問類的名稱:

BaseModule.__name__ 
+0

+1幫助顯示OP做事更Python的方式,而不是僅僅在撲。他們的解決方案。我將開始建議'@ classmethod',但自動定義的變量更好。 – dwanderson

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