はじめに
Pylintをいれたのでコーディング規約にそったコーディングをしたいと思いますここではエラーになった内容とその対処法について記載します
Pylintの導入については下記の記事を参照してください
ドキュメント
エラー内容と対処法
ドキュメント
missing-docstring
これはクラスやプログラム本体などかならずドキュメントを書きましょうということですhttps://www.python.org/dev/peps/pep-0008/#documentation-strings
エラー内容
1 col 1 warning| [missing-docstring] Missing module docstringこれはモジュールに対してのドキュメントが無いことを示しています
修正前
>> 1 #!/usr/bin/env python3 2 # -*- coding: utf_8 -*-
修正後
1 """ Return the learned parameter """ 2 #!/usr/bin/env python3 3 # -*- coding: utf_8 -*-
エラー内容
12 col 1 warning| [missing-docstring] Missing class docstringこれはクラス内のドキュメントが不足していること示しています
修正前
>> 12 class TwoLayerNet:
修正後
12 class TwoLayerNet: 13 """ Two Layer Neural Net Work class """
エラー内容
21 col 5 warning| [missing-docstring] Missing method docstringこれはクラス内のメソッドのドキュメント不足していること示しています
修正前
>> 20 def get_data(self):
修正後
>> 20 def get_data(self): 21 """ Return MNIST data """
import
unused-import
これは利用されていないライブラリであることを示していますなので削除すればよいです
エラー内容
4 col 1 warning| [unused-import] Unused import pickle
修正前
2 #!/usr/bin/env python3 3 # -*- coding: utf_8 -*- >> 4 import pickle 5 import matplotlib
修正後
2 #!/usr/bin/env python3 3 # -*- coding: utf_8 -*- 4 import matplotlib
wrong-import-position
これはImportの順序が良くないことを示しています。https://www.python.org/dev/peps/pep-0008/#imports
順序は
・標準ライブラリ
・関連するサードパーティライブラリ
・ローカルライブラリ
エラー内容
6 col 1 warning| [wrong-import-position] Import "import numpy as np" should be placed at the top of the module
修正前
4 import matplotlib 5 matplotlib.use('Agg') >> 6 import numpy as np 7 from keras.datasets import mnist 8 from common.functions import sigmoid, softmax, cross_entropy_error 9 from common.gradient import numerical_gradient 10 import matplotlib.pylab as plt修正後
4 import matplotlib 5 import numpy as np 6 from keras.datasets import mnist 7 from common.functions import sigmoid, softmax, cross_entropy_error 8 from common.gradient import numerical_gradient 9 import matplotlib.pylab as plt 10 matplotlib.use('Agg')
Function and Method Arguments
no-method-argument
エラー内容
20 col 5 error| [no-method-argument] Method has no argumentこれは、引数が無いことを示すエラーです。
インスタンス変数にアクセスする場合は、引数にselfを入れます
インスタンス変数にアクセスしない場合は、@staticmethodのアノテーションを入れます
修正前
>> 20 def get_data(): 21 """ Return MNIST data """ 22 (x_train, t_train), (x_test, t_test) = mnist.load_data() 23 return x_test, t_test
修正後
20 @staticmethod 21 def get_data(): 22 """ Return MNIST data """ 23 (x_train, t_train), (x_test, t_test) = mnist.load_data() 24 return x_test, t_test
Function and Variable Names
https://www.python.org/dev/peps/pep-0008/#function-and-variable-namesinvalid-name
エラー内容
15 col 9 warning| [invalid-name] Attribute name "W1" doesn't conform to snake_case naming styleこれは名前のスタイルが間違っているというエラーです
http://pylint-messages.wikidot.com/messages:c0103
変数の場合は、小文字_小文字か数字 という形にしないといけないようです
修正前
14 def __init__(self): >> 15 self.W1 = np.random.randn(28, 3)
修正後
14 def __init__(self): 15 self.w_1 = np.random.randn(28, 3)
エラー内容
49 col 1 warning| [invalid-name] Constant name "batch_size" doesn't conform to UPPER_CASE naming styleこれは定数名の警告です。定数は全て大文字にする必要があります
修正前
>> 49 batch_size = 100
修正後
49 BATCH_SIZE = 100
unused-variable
エラー内容
23 col 10 warning| [unused-variable] Unused variable 'x_train'利用していない変数というエラーです。不要であれば削除すればよいです
ここでは必要な変数なので、プライベート変数として__をつけることで回避します
(__をつけても実際には呼べるので擬似的なプライベート変数)
修正前
20 @staticmethod 21 def get_data(): 22 """ Return MNIST data """ >> 23 (x_train, t_train), (x_test, t_test) = mnist.load_data() 24 return x_test, t_test
修正後
20 @staticmethod 21 def get_data(): 22 """ Return MNIST data """ 23 (__x_train, __t_train), (__x_test, __t_test) = mnist.load_data() 24 return __x_test, __t_test
Whitespace in Expressions and Statements
https://www.python.org/dev/peps/pep-0008/#whitespace-in-expressions-and-statements
bad-whitespace
エラー内容
16 col 37 warning| [bad-whitespace] Exactly one space required after commaこれはカンマのあとにはスペースが必要という警告です
修正前
14 def __init__(self): 15 self.w_1 = np.random.randn(28, 3) >> 16 self.w_2 = np.random.randn(3,28)
修正後
14 def __init__(self): 15 self.w_1 = np.random.randn(28, 3) 16 self.w_2 = np.random.randn(3, 28)
コメント