Python クラスの基本的な入門知識
class Account(object):
"A simple class"
account_type =" Basic"
def __init__(self,name,balance):
"新しいアカウント インスタンスを初期化する"
self.name=name
self.balance=balance
defposit(self) 、amt):
"入金"
self.balance=self.balance+amt
defdraw(self,amt):
"出金"
self.balance=self.balance- amt
def inventory(self):
"現在の残高を返す"
return self.balance
このうち、__init__関数はPythonのコンストラクタです。また、変数balanceはクラスインスタンスの変数です。
さらに、Python のクラスでメンバー関数を定義する場合、最初のパラメーターは常に self であり、それ自体のインスタンスを表します。これは C++ の this ポインターに似ていますが、C++ の this ポインターは暗黙的です。グローバルに表示されますが、Python ではパラメータとして渡す必要があります。これは Python でのクラス定義のもう 1 つの特徴です。
クラスのメンバー関数では、次のようにクラス名を先頭に指定する必要があります。
class Foo(object):
def bar(self):
print "bar!"
def spam (self):
bar(self) # エラー、NameError が発生します。次の可能性があります: self.bar
Foo.bar(self) # 有効な
2. 静的メソッドクラス内で呼び出す場合には使用されません 静的メソッドの使用
クラス内で静的メソッドを使用するには、クラスのメンバー関数の前に @staticmethod タグを追加して、次のメンバー関数が静的関数であることを示す必要があります。静的メソッドを使用する利点は、このメソッドを使用するためにインスタンスを定義する必要がないことです。さらに、次のように、複数のインスタンスがこの静的メソッドを共有します:
class SimClass():
@staticmethod
def ShareStr():
print "これは静的メソッドです"
SimClass.ShareStr() #Static 関数を使用する
3. クラスメソッド:
クラスメソッドは通常のメンバー関数や静的関数とは異なるようです。このセマンティクスは、その定義によって異なります。
クラス メソッドは、クラスを使用して呼び出すか、そのインスタンスを使用して呼び出すことができるメソッドです。このメソッドを呼び出すか、このメソッドを呼び出すクラス インスタンス、メソッドの最初の文字 引数は常に、メソッドが定義されているクラス オブジェクトです。
メソッドの最初のパラメータはインスタンス オブジェクトではなくクラス オブジェクトであることに注意してください。
慣例により、クラス メソッドの最初のパラメータには cls という名前が付けられます。いつでもクラス メソッドを定義する必要はありません。 (クラス メソッドが実現できるすべての機能は、関数がクラス オブジェクトをパラメータとして受け入れる限り、通常の関数を定義することで実現できます。
クラス メソッドを定義し、クラス メソッドを使用します:
class ABase(object):
@classmethod #クラス メソッド修飾子
def aclassmet(cls): print 'a class method for', cls.__name__
class ADeriv(ABase): pass
bInstance = ABase( )
dInstance = ADeriv( )
ABase.aclassmet( ) # 印刷: ABase のクラス メソッド
bInstance.aclassmet( ) # 印刷: ABase のクラス メソッド
ADeriv.aclassmet( ) # 印刷: ADeriv のクラス メソッド
dInstance.aclassmet( ) # 印刷: ADeriv のクラス メソッド
つまり、クラス メソッドは必要なく、通常の関数を使用してクラス メソッドの機能を実装することもできます。
4. クラスの継承
Python では、次のようにクラスを継承します。
class A(object) #Inherit object class
#....
class B(A) #Inherit class A
#....
また、Python は多重継承をサポートしています。多重継承の場合は、対応する関数を見つけて、その Python のような対応するメソッドがあります。 :
class D(oject): pass #D はオブジェクト class B(D): #B は D のサブクラスです
varB = 42
def method1(self):
print "Class B : method1"
class C(D) : #Cこれも D のサブクラスです。
varC = 37
def method1(self):
print "Class C : method1"
def method2(self):
print "Class C : method2"
class A(B,C): #A は B および C のサブクラスです
varA = 3.3
def method3(self):
print "Class A : method3"
A.method1() を呼び出すとどうなりますか?答えは ClassB:method1 です。この本では次のように紹介されているだけです:
基底クラスで定義された属性を検索する場合、Python は深さ優先の原則を使用して、サブクラス定義内の基底クラスの順序で検索します。 **注意** (新しいスタイルのクラスではこの動作が変更されました)。上記の例では、A.varB にアクセスすると、A-B-D-C-D の順に検索が実行され、同じ属性を定義する基本クラスが複数ある場合は、最初に見つかったもののみが検索されます。属性値が使用されます:
5. データ非表示
Python でデータ非表示を実装するのは非常に簡単で、クラス変数名の前にキーワードを追加する必要はありません。このようにして、クラスのインスタンスの場合、その変数名とメンバー関数は使用できなくなり、継承されたクラスに対しても非表示になります。名前付けの競合を引き起こすことなく、まったく同じ変数名またはメンバー関数名を使用できます。
class A:
def __init__(self):
self.__X = 3 # self._A__X
クラス B(A):
def __init__(self):
A.__init__(self)
self.__X = 37 # self._B__X

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

正規表現は、プログラミングにおけるパターンマッチングとテキスト操作のための強力なツールであり、さまざまなアプリケーションにわたるテキスト処理の効率を高めます。

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

この記事では、Pythonにおける仮想環境の役割について説明し、プロジェクトの依存関係の管理と競合の回避に焦点を当てています。プロジェクト管理の改善と依存関係の問題を減らすための作成、アクティベーション、およびメリットを詳しく説明しています。

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...
