python基礎編--Class(クラス)
1794 ワード
クラス
特徴:抽象的なオブジェクトであり、オブジェクト言語向けのコアであり、クラスは継承しないか、多く継承することができます.
ID:class
例:
アクセスクラス:
詳細:
COUNT_A:クラスAのクラス変数(グローバル変数)は、A.COUNT_Aまたはmy_a.COUNT_Aがアクセスし、ライフサイクルはクラスAである.
a:クラスAのメンバー変数でmy_a.aアクセス、ライフサイクルはインスタンスmy_a.
my_a.___doc__:クラスの説明注析
クラスに二重下線()先頭の変数はプライベート変数(インスタンスはa._host直接アクセスが許可されていない)で、二重下線()で最初の方法はpythonが関数を持っている可能性があります.
クラス継承:
詳細:
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のみ初期化
特徴:抽象的なオブジェクトであり、オブジェクト言語向けのコアであり、クラスは継承しないか、多く継承することができます.
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のみ初期化