はじめに

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

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