python:下線変数とメソッドの意味

3714 ワード

PythonのコードスタイルはPEP 8によって記述されている.このドキュメントはPythonプログラミングスタイルの各方面を説明しています.このドキュメントを遵守する条件の下で、異なるプログラマーが作成したPythonコードは最大限の類似スタイルを維持することができます.これにより、読みやすくなり、プログラマー同士のコミュニケーションが容易になります.
1.変数
  • _xxxは、単下線の先頭の変数で、保護された変数であることを示し、原則として直接アクセスは許されないが、外部クラスはこの変数にアクセスすることができる.これはプログラマ間の約束にすぎず、外部クラスがアクセスしないことを警告するために使用されます.
  • class Student(object):
    def __init__(self, name):
        self._name = name
    >>> sd = Student('Tom')
    >>> sd._name
    'Tom'
    
  • __xxxは、二重下線で始まり、プライベートタイプ(private)の変数を表します.このクラス自体へのアクセスが許可されているだけで、サブクラスでもクラス属性(クラス変数)の名前を付けることはできません.呼び出し時に名前が変更されます(クラスStudioの内部では、self._Studio_nameのように_Studio_nameが_Studio_nameになります)二重下線の先頭のインスタンス変数は、必ずしも外部からアクセスできないのではないでしょうか.実はそうではありません.まだパスできますStudent__nameアクセス_name変数:
  • class Student(object):
        def __init__(self, name):
            self.__name = name
    >>> sd = Student('Tom')
    >>> sd.__name
    Traceback (most recent call last):
      File "", line 1, in 
    AttributeError: 'Student' object has no attribute '__name'
    >>> sd._Student__name
    'Tom'
    
  • __xxx__,二重下線で始まり、二重下線で終わるのは内蔵変数で、内蔵変数はprivate変数ではなく、_init__,__import__または_file__.だから、このような変数を自分で定義しないでください.
  • xxx_,単一下線の末尾の変数は、Pythonキーワードのネーミングと競合しないようにするために一般的に使用されます.
  • USER_CONSTANTは、大文字に下線を付け、変更されないグローバル変数には大文字に下線を付けます.

  • 2.関数と方法
    全体的には、小文字と下線を使用する必要があります.しかし、古いライブラリの中には、大文字と小文字を混合し、最初の単語を小文字にし、その後、各単語の最初のアルファベットを大文字にし、残りの小文字を使用しています.しかし、小文字と下線が仕様になっています.
  • プライベートメソッド:小文字とプリアンブル下線
  • def _secrete(self):
    print "don't test me."
    

    ここでは、プライベート変数と同様に、本当のプライベートアクセス権限ではありません.また、一般的な関数では、2つのプリアンブル下線を使用しないことにも注意してください(2つのプリアンブル下線に遭遇した場合、Pythonの名前の改編特性が機能します).特殊な関数は後述します.
  • 特別な方法:小文字と2つのプリアンブル下線、2つの後置下線
  • def __add__(self, other):
    return int.__add__(other)
    

    このスタイルは、オペレータのリロードなど、特殊な関数にのみ適用されます.
  • 関数パラメータ:小文字と下線、デフォルト値の等号の両側にスペースがない
  • def connect(self, user=None):
    self._user = user
    

    3.クラス
    クラスは、すべての単語の頭文字が大文字で残りのアルファベットが小文字であるアルパカ形式で命名されます.クラス名は簡明で正確であり、クラスが完了した仕事を理解するのに十分である必要があります.一般的な方法の1つは、そのタイプまたは特性を表す接尾辞を使用することです.たとえば、SQLEngine MimeTypesはベースクラスに対してBaseまたはAbstract接頭辞を使用することができます.
    BaseCookie
    AbstractGroup
    class UserProfile(object):
        def __init__(self, profile):
            return self._profile = profile
    
        def profile(self):
            return self._profile
    

    4.モジュールとパッケージ
    特殊モジュールinitのほか、モジュール名には下線のない小文字が使用されます.プロトコルが実装される場合、libは通常、接尾辞として使用されます.たとえば、次のようにします.
    import smtplib
    import os
    import sys
    

    5.パラメータについて
    5.1断言で静的タイプ検出を実現しない
    断言はパラメータのチェックに使用できますが、静的タイプ検出のみを行うべきではありません.Pythonは動的タイプ言語であり,静的タイプ検出はその設計思想に反している.断言は、関数が無意味に呼び出されないようにするために使用されるべきである.
    5.2*argsと*kwargsを乱用しない
    *argsおよび*kwargsパラメータは、関数の堅牢性を破壊する可能性があります.署名がぼやけ、コードが小さなパラメータ解析器を構築し始めることが多い.
    6.その他
    6.1 hasまたはis接頭辞を使用してブール要素の名前を付ける
    is_connect = True
    has_member = False
    

    6.2複数の形式でシーケンスの名前を付ける
    members = ['user_1', 'user_2']
    

    6.3辞書に明示的な名前を付ける
    person_address = {'user_1':'10 road WD', 'user_2' : '20 street huafu'}
    

    6.4共通名称を避ける
    リスト、dict、sequence、elementなどの名前は避けるべきです.
    6.5既存の名前を避ける
    OSのようなsysのようなシステムがすでに存在する名前は避けるべきである.
    7.いくつかの数字
  • の行列数:PEP 8は79列と規定されており、これは少し厳しいです.たとえば、フルスクリーン時のエディタの表示列数を超えないように、自分の状況に応じてください.これにより、水平カーソルを動かさずにコードを簡単に表示できます.
  • 関数:30行のコードを超えないで、画面クラスに表示され、垂直カーソルを使用せずに関数全体を表示できます.
  • クラス:200行のコードを超えないでください.10以上の方法はありません.
  • モジュールは500行を超えないでください.