ホームページ バックエンド開発 Python チュートリアル Python クラスの基本的な入門知識

Python クラスの基本的な入門知識

Jun 16, 2016 am 08:47 AM
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 つの特徴です。
クラスのメンバー関数では、次のようにクラス名を先頭に指定する必要があります。
Copy code コードは次のとおりです:

class Foo(object):
def bar(self):
print "bar!"
def spam (self):
bar(self) # エラー、NameError が発生します。次の可能性があります: self.bar
Foo.bar(self) # 有効な

2. 静的メソッドクラス内で呼び出す場合には使用されません 静的メソッドの使用
クラス内で静的メソッドを使用するには、クラスのメンバー関数の前に @staticmethod タグを追加して、次のメンバー関数が静的関数であることを示す必要があります。静的メソッドを使用する利点は、このメソッドを使用するためにインスタンスを定義する必要がないことです。さらに、次のように、複数のインスタンスがこの静的メソッドを共有します:
Copy code コードは次のとおりです:

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
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

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

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

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

人気のあるPythonライブラリとその用途は何ですか? 人気のあるPythonライブラリとその用途は何ですか? Mar 21, 2025 pm 06:46 PM

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

正規表現とは何ですか? 正規表現とは何ですか? Mar 20, 2025 pm 06:25 PM

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

uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

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

Pythonの仮想環境の目的を説明してください。 Pythonの仮想環境の目的を説明してください。 Mar 19, 2025 pm 02:27 PM

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

文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? 文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? Apr 01, 2025 pm 11:18 PM

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

See all articles