python基礎編--Class(クラス)

1794 ワード

クラス
特徴:抽象的なオブジェクトであり、オブジェクト言語向けのコアであり、クラスは継承しないか、多く継承することができます.
ID:class
例:
class A(object):
    """
     
    """
    COUNT_A = []

    def __init__(self, a):
        self.a = a
        self.COUNT_A.append(1)

    def str(self):
        print 'COUNT_A:%s, list_a:%s' % (self.COUNT_A, self.a)

アクセスクラス:
my_a = A(123)
my_a.str()
print my_a.__doc__

#  
# COUNT_A:[1], list_a:123
#
#    

詳細:
COUNT_A:クラスAのクラス変数(グローバル変数)は、A.COUNT_Aまたはmy_a.COUNT_Aがアクセスし、ライフサイクルはクラスAである.
a:クラスAのメンバー変数でmy_a.aアクセス、ライフサイクルはインスタンスmy_a.
my_a.___doc__:クラスの説明注析
クラスに二重下線()先頭の変数はプライベート変数(インスタンスはa._host直接アクセスが許可されていない)で、二重下線()で最初の方法はpythonが関数を持っている可能性があります.
クラス継承:
class A(object):
    """
     A
    """
    COUNT_A = []

    def __init__(self, a):
        self.a = a
        self.COUNT_A.append(1)

    def str(self):
        print 'COUNT_A:%s, list_a:%s' % (self.COUNT_A, self.a)


class B(A):
    """
     B, A
    """
    def __init__(self, b):
        super(B, self).__init__(b)      #  
        self.b = b

    def str(self):
        print 'COUNT_A:%s, list_a:%s' % (self.COUNT_A, self.a)

my_a = A(123)
my_a.str()

my_b = B(234)
my_b.str()

#  
# COUNT_A:[1], list_a:123
# COUNT_A:[1, 1], list_a:234

詳細:
super(B, self).__init__(b):#pythonの新しい使い方で提案された初期胡父類の使い方
my_b.strクラス中:Aを引き継いだCOUNT_Aとa.
質問:
COUNT_A:[1,1]なんと2つの値がありますか.
理由:
だってCOUNT_AはAクラスのメンバー変数(グローバル変数)であり、COUNT_Aはリストです(グローバル変数がintタイプの場合、出力結果はデフォルトです.これはpythonの各タイプのストレージ使用に関連する可能性があります.
文字、タプル、数字は変更できないオブジェクトで、リストも辞書もポインタです)
に注意
:1つのクラスが2つ以上のクラスを継承する場合、
super(B, self).__init__(b)class B(A,C)のAのみ初期化