Python学習の対象(class)
7706 ワード
クラスの作成
class文を使用して新しいクラスを作成します.classの後にクラスの名前を付け、次の例でコロンで終わります.
selfはクラスのインスタンスを表し、クラスではありません.
クラスのメソッドは、通常の関数とは特別な違いがあります.追加の関数が必要です.
最初のパラメータ名
、慣例に従ってその名前はselfです.
インスタンスオブジェクトの作成
インスタンス化クラス他のプログラミング言語では一般にキーワードnewが用いられるが,Pythonではこのキーワードはなく,クラスのインスタンス化類似関数呼び出し方式である.
次にクラス名Employeeを使用してインスタンス化し、_init__ メソッドはパラメータを受け入れます.
アクセス属性
ポイント(.)を使用できます.に表示されます.次のクラス名を使用してクラス変数にアクセスします.
Python内蔵クラス属性
クラスの継承
オブジェクト向けのプログラミングがもたらす主な利点の1つはコードの再利用であり,この再利用を実現する方法の1つは継承メカニズムによるものである.継承はクラス間のタイプとサブタイプの関係として完全に理解できます.
注意すべき点:
継承構文
クラス派生クラス名(
ベースクラス名
)://... ベースクラス名は括弧に書かれており、基本クラスはクラス定義時にメタグループに指定されます.
pythonで継承されるいくつかの特徴:
継承メタグループに1つ以上のクラスがリストされている場合は、「多重継承」と呼ばれます.
構文:
派生クラスの宣言は、親クラスと同様に、継承されたベースクラスのリストがクラス名の後に続き、次のようになります.
issubclass()またはisinstance()メソッドを使用して検出できます.
issubclass()-ブール関数は、1つのクラスが別のクラスのサブクラスまたは子孫クラスであると判断します.構文:issubclass(sub,sup)isinstance(obj,Class)ブール関数objがClassクラスのインスタンスオブジェクトまたはClassサブクラスのインスタンスオブジェクトである場合、trueが返されます.
メソッド書き換え
親メソッドの機能があなたのニーズを満たすことができない場合は、子メソッドで親メソッドを書き換えることができます.
きほんさいかほうしき
次の表に、独自のクラスで書き換えることができる一般的な機能を示します.
シーケンス番号
メソッド、説明&簡単な呼び出し
1
__init__ ( self [,args...] ) コンストラクション関数の簡単な呼び出し方法:obj=className(args)
2
__del__(self)メソッドを解析し、オブジェクトの簡単な呼び出しメソッドを削除します:del obj
3
__repr__(self)解釈器読み取りのための簡単な呼び出し方法に変換:repr(obj)
4
__str__(self)値を人間の読書に適した形式に変換するための簡単な呼び出し方法:str(obj)
5
__cmp__ (self,x)オブジェクトの比較的簡単な呼び出し方法:cmp(obj,x)
演算子の再ロード
Pythonは、演算子の再ロードもサポートしています.例は次のとおりです.
クラスのプロパティとメソッド
クラスのプライベート属性
__private_attrs
:2つの下線の先頭に、この属性がプライベートであることを宣言し、クラスの外部で使用または直接アクセスできません.クラス内のメソッドで使用する場合
self.__private_attrs
.
クラスのメソッド
クラスの内部で、
def
キーワードはクラスにメソッドを定義できます.一般的な関数定義とは異なり、クラスメソッドにはパラメータselfが含まれ、最初のパラメータである必要があります.
クラスのプライベートメソッド
__private_method
:2つの下線の先頭に、このメソッドがプライベートメソッドであることを宣言し、クラスの外部で呼び出すことはできません.クラスの内部呼び出し
self.__private_methods
下線、下線、頭と尾の下線の説明:
__foo__: 特列メソッドを定義します.類似しています.init__()とか.
_foo:単一の下線で始まるのはprotectedタイプの変数です.つまり、保護タイプはサブクラスへのアクセスのみを許可し、from module import*には使用できません.
__foo:二重下線はプライベートタイプ(private)の変数を表し、このクラス自体へのアクセスを許可するしかありません.
class文を使用して新しいクラスを作成します.classの後にクラスの名前を付け、次の例でコロンで終わります.
class ClassName:
' ' #
class_suite #
selfはクラスのインスタンスを表し、クラスではありません.
クラスのメソッドは、通常の関数とは特別な違いがあります.追加の関数が必要です.
最初のパラメータ名
、慣例に従ってその名前はselfです.
インスタンスオブジェクトの作成
インスタンス化クラス他のプログラミング言語では一般にキーワードnewが用いられるが,Pythonではこのキーワードはなく,クラスのインスタンス化類似関数呼び出し方式である.
次にクラス名Employeeを使用してインスタンス化し、_init__ メソッドはパラメータを受け入れます.
" Employee "
emp1 = Employee("Zara", 2000)
" Employee "
emp2 = Employee("Manni", 5000)
アクセス属性
ポイント(.)を使用できます.に表示されます.次のクラス名を使用してクラス変数にアクセスします.
emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount
Python内蔵クラス属性
● __dict__ : ( , )
● __doc__ :
● __name__:
● __module__: ( '__main__.className', mymod , className.__module__ mymod)
● __bases__ : ( )
クラスの継承
オブジェクト向けのプログラミングがもたらす主な利点の1つはコードの再利用であり,この再利用を実現する方法の1つは継承メカニズムによるものである.継承はクラス間のタイプとサブタイプの関係として完全に理解できます.
注意すべき点:
継承構文
クラス派生クラス名(
ベースクラス名
)://... ベースクラス名は括弧に書かれており、基本クラスはクラス定義時にメタグループに指定されます.
pythonで継承されるいくつかの特徴:
1: (__init__() ) , 。
2: , , self 。 self
3:Python , , 。( , )。
, " " 。
継承メタグループに1つ以上のクラスがリストされている場合は、「多重継承」と呼ばれます.
構文:
派生クラスの宣言は、親クラスと同様に、継承されたベースクラスのリストがクラス名の後に続き、次のようになります.
class SubClassName (ParentClass1[, ParentClass2, ...]):
'Optional class documentation string'
class_suite
issubclass()またはisinstance()メソッドを使用して検出できます.
issubclass()-ブール関数は、1つのクラスが別のクラスのサブクラスまたは子孫クラスであると判断します.構文:issubclass(sub,sup)isinstance(obj,Class)ブール関数objがClassクラスのインスタンスオブジェクトまたはClassサブクラスのインスタンスオブジェクトである場合、trueが返されます.
メソッド書き換え
親メソッドの機能があなたのニーズを満たすことができない場合は、子メソッドで親メソッドを書き換えることができます.
きほんさいかほうしき
次の表に、独自のクラスで書き換えることができる一般的な機能を示します.
シーケンス番号
メソッド、説明&簡単な呼び出し
1
__init__ ( self [,args...] ) コンストラクション関数の簡単な呼び出し方法:obj=className(args)
2
__del__(self)メソッドを解析し、オブジェクトの簡単な呼び出しメソッドを削除します:del obj
3
__repr__(self)解釈器読み取りのための簡単な呼び出し方法に変換:repr(obj)
4
__str__(self)値を人間の読書に適した形式に変換するための簡単な呼び出し方法:str(obj)
5
__cmp__ (self,x)オブジェクトの比較的簡単な呼び出し方法:cmp(obj,x)
演算子の再ロード
Pythonは、演算子の再ロードもサポートしています.例は次のとおりです.
#!/usr/bin/python
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self,other):
return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print v1 + v2
:
Vector(7,8)
クラスのプロパティとメソッド
クラスのプライベート属性
__private_attrs
:2つの下線の先頭に、この属性がプライベートであることを宣言し、クラスの外部で使用または直接アクセスできません.クラス内のメソッドで使用する場合
self.__private_attrs
.
クラスのメソッド
クラスの内部で、
def
キーワードはクラスにメソッドを定義できます.一般的な関数定義とは異なり、クラスメソッドにはパラメータselfが含まれ、最初のパラメータである必要があります.
クラスのプライベートメソッド
__private_method
:2つの下線の先頭に、このメソッドがプライベートメソッドであることを宣言し、クラスの外部で呼び出すことはできません.クラスの内部呼び出し
self.__private_methods
下線、下線、頭と尾の下線の説明:
__foo__: 特列メソッドを定義します.類似しています.init__()とか.
_foo:単一の下線で始まるのはprotectedタイプの変数です.つまり、保護タイプはサブクラスへのアクセスのみを許可し、from module import*には使用できません.
__foo:二重下線はプライベートタイプ(private)の変数を表し、このクラス自体へのアクセスを許可するしかありません.