2014-03-06 57 views
6

在Python 3,我有以下代碼:如何避免在Python 3中繼承類的構造函數的Pylint警告?

class A: 
    def __init__(self): 
     pass 

class B(A): 
    def __init__(self): 
     super().__init__() 

這就產生了pylint的警告:

  • 定義舊式類。 (舊式類)
  • 的老樣式類(超在老級)

在我的理解,使用超在Python 3不存在一個老風格類,並且這個代碼是可以的。

即使我明確地使用新式的類與此代碼

class A(object): 
    def __init__(self): 
     pass 

class B(A): 
    def __init__(self): 
     super().__init__() 

我得到pylint的警告,因爲不同的語法來調用在Python 3中的父類的構造:

  • 失蹤super()(missing-super-argument)的參數

那麼,如何告訴Pylint我想檢查Python 3代碼以避免這些消息(不禁用Pylint檢查)?

回答

0

這是由於星形線的一個錯誤,這是不考慮所有的類新風格瓦特/ Python 3的前https://bitbucket.org/logilab/astroid/commits/6869fb2acb9f58f0ba2197c6e9008989d85ca1ca

即將發佈。

+0

謝謝!這就引發了另外一個問題,那就是如何告訴Pylint,在它的檢查中使用哪個Python版本。我爲此輸入了一個新問題:http://stackoverflow.com/questions/22309636/check-python-3-source-with-pylint-running-with-python-2 – romor

3

根據this list「缺少參數超()」有代碼E1004:。如果要禁用警告,你可以在文件的開頭添加這行只有一種類型:

# pylint: disable=E1004 

或者你可以嘗試調用super()這樣的:

class B(A): 
    def __init__(self): 
    super(B, self).__init__() 
+0

謝謝,你甚至可以通過'#pylint:disable = missing-super-argument'來禁用消息。但是,我的Python代碼出現了問題,或者Pylint與Python 3不兼容? – romor

+0

我不確定,因爲我在Python 2.7上運行。 pylint版本1.1也應該支持python 3。 – skamsie