目次
01.dir
組み込み関数
- で対象ほとんどユビキタスである私たちが学ぶ前に、変数、データを、関数はオブジェクトであります
Python
InPython
は、次の2つの方法を使用して確認できます。
- 識別子/データの後に入力
.
プレスTAB
ボタンは、iPython
することができますが、オブジェクトを呼び出すように求めるメッセージが表示されます方法のリスト dir
着信識別子/データを使用する組み込み関数、オブジェクトはすべてのプロパティとメソッドで表示できます
ヒントの __方法名__
形式はPython
、組み込みのメソッド/プロパティを提供することです。後でいくつかの一般的な組み込みのメソッド/プロパティを提供します。
シリアルナンバー | メソッド名 | の種類 | 効果 |
---|---|---|---|
01 | __new__ |
方法 | オブジェクトを作成すると、意志が自動的に呼び出されます |
02 | __init__ |
方法 | オブジェクトはいつ初期化され、自動的に呼び出されます |
03 | __del__ |
方法 | オブジェクトは以前にメモリから破棄され、自動的に呼び出されます |
04 | __str__ |
方法 | 戻り値オブジェクトの記述情報、print 機能出力の用途 |
ヒントdir()
は機能をうまく利用します、研究では多くのコンテンツを覚える必要はありません
02.単純なクラスを定義する
オブジェクト指向である以上のパッケージ、クラスのパッケージの複数のメソッド、クラスオブジェクトを介して作成され、あなたが直接これらのメソッドを呼び出すことができます!
2.1メソッドのみを含むクラスを定義する
Python
のみ含まれているクラスを定義する方法は、次の構文:
class 类名:
def 方法1(self, 参数列表):
pass
def 方法2(self, 参数列表):
pass
- メソッドの定義形式は、以前に学習した関数とほぼ同じです。
- 違いは、最初のパラメータはでなければならないという
self
ことです。今は覚えておいて、後で導入してくださいself
注:大きなこぶの命名法を満たすためのクラス命名規則の名前
2.2オブジェクトを作成する
- クラスが定義されたら、このクラスを使用してオブジェクトを作成します。構文形式は次のとおりです。
对象变量 = 类名()
2.3ケース
要求する
- 子猫は魚を食べるのが大好きで、子猫は水を飲むのが大好きです
分析
- 猫を定義する
Cat
- 2つのメソッドを定義し
eat
、drink
- オンデマンド-属性を定義する必要はありません
class Cat:
"""这是一个猫类"""
def eat(self):
print("小猫爱吃鱼")
def drink(self):
print("小猫在喝水")
tom = Cat()
tom.drink()
tom.eat()
参照される概念の強調
オブジェクト指向開発では、参照の概念も同様に適用できます。
- で
Python
使用クラスは、オブジェクトを作成した後、tom
変数がまだ記録されているメモリ内のオブジェクトのアドレスを - つまり、
tom
変数は新しい猫オブジェクトを参照します - 使用
print
出力オブジェクト変数は、デフォルトでは、可変出力可能なオブジェクト参照がされているクラスのオブジェクトを作成なさ、並びにメモリのアドレス(16進数)
ヒント:コンピューターでは、通常、16進表現のメモリアドレス
%d
10進数で数値を出力できます%x
16進数で数値を出力できます
03.self
パラメータの方法
3.1オブジェクトに属性を追加する
- では
Python
真ん中、あなたがしたいオブジェクトのプロパティを設定し、非常に簡単で、しかしお勧めできません- 理由:オブジェクトプロパティのカプセル化は、クラス内にカプセル化する必要があります
- プロパティをに設定する際に直接必要なのは外部コードクラスのみです
.
注:この方法は簡単ですが、お勧めしません。
tom.name = "Tom"
...
lazy_cat.name = "大懒猫"
3.2self
内部メソッドでは、各猫の名前の出力
どのオブジェクトメソッド呼び出しのうち、メソッド内にあるオブジェクトへの参照
self
は
- メソッドクラスパッケージ内で、オブジェクト自体を呼び出す現在のメソッドを
self
言います - メソッドを呼び出すとき、プログラマーは
self
パラメーターを渡す必要はありません - メソッドの内部
- オブジェクトのプロパティにアクセスでき
self.
ます - 他のオブジェクトメソッドを呼び出すこともでき
self.
ます
- オブジェクトのプロパティにアクセスでき
- 変換コードは次のとおりです。
class Cat:
def eat(self):
print("%s 爱吃鱼" % self.name)
tom = Cat()
tom.name = "Tom"
tom.eat()
lazy_cat = Cat()
lazy_cat.name = "大懒猫"
lazy_cat.eat()
- でクラス外を通じて
变量名.
アクセスオブジェクトのプロパティとメソッド - 方法をパッケージの種類によって、
self.
オブジェクトのアクセスプロパティとメソッド
04.初期化方法
4.1クラス外のオブジェクトに属性を追加する
- ケースコードを調整し、最初にメソッドを呼び出し、次にプロパティを設定して、実行効果を観察します
tom = Cat()
tom.drink()
tom.eat()
tom.name = "Tom"
print(tom)
- プログラム実行エラーは次のとおりです。
AttributeError: 'Cat' object has no attribute 'name'
属性错误:'Cat' 对象没有 'name' 属性
促す
- 日常の開発では、クラス外でオブジェクト増加プロパティを使用する ことはお勧めしません
- 実行時に属性が見つからない場合、プログラムはエラーを報告します
- クラスの内部に属性をカプセル化する必要があるオブジェクトが含まれている必要があります
4.2初期化方法
- ときに
类名()
オブジェクトが作成され、それがなり、自動的に次の手順を実行します。- オブジェクトに割り当てられたスペースのメモリ内-オブジェクトの作成
- オブジェクトセットの初期値のプロパティ-初期化メソッド(
init
)
- 初期化方法がある
__init__
方法、__init__
対象内蔵方法
__init__
このメソッドは、プロパティが持つクラスメソッドを定義するために特に使用されます。
Cat
増加の__init__
方法は、あなたがオブジェクトを作成するときにメソッドが自動的に呼び出されていることを確認します
class Cat:
"""这是一个猫类"""
def __init__(self):
print("初始化方法")
4.3初期化メソッド内でプロパティを定義する
__init__
使用の内部では、プロパティを定義self.属性名 = 属性的初始值
できます- 属性を定義し、
Cat
クラスを使用してオブジェクトを作成したら、プロパティを所有します
class Cat:
def __init__(self):
print("这是一个初始化方法")
# 定义用 Cat 类创建的猫对象都有一个 name 的属性
self.name = "Tom"
def eat(self):
print("%s 爱吃鱼" % self.name)
# 使用类名()创建对象的时候,会自动调用初始化方法 __init__
tom = Cat()
tom.eat()
4.4初期化中に初期値を設定する
- 開発では、オブジェクトを同時に作成したい場合は、オブジェクトのプロパティを設定します。これは
__init__
メソッド変換にすることができます。__init__
メソッドのパラメーターとして定義された、プロパティセットの目的の値- 内部
self.属性 = 形参
パラメータを使用する方法では、外部送信を受信しました - オブジェクトを作成するときは、
类名(属性1, 属性2...)
callを使用します
class Cat:
def __init__(self, name):
print("初始化方法 %s" % name)
self.name = name
...
tom = Cat("Tom")
...
lazy_cat = Cat("大懒猫")
...
05.組み込みのメソッドとプロパティ
シリアルナンバー | メソッド名 | の種類 | 効果 |
---|---|---|---|
01 | __del__ |
方法 | オブジェクトは以前にメモリから破棄され、自動的に呼び出されます |
02 | __str__ |
方法 | 戻り値オブジェクトの記述情報、print 機能出力の用途 |
5.1__del__
方法
-
で
Python
类名()
オブジェクトを作成するときに使用する場合、オブジェクトはスペースの完全な割り当てであり、自動呼び出し__init__
メソッドです。- ときにオブジェクトがメモリから破棄される前に、それがされます自動的に呼び出す
__del__
方法を
-
アプリケーションシナリオ
__init__
初期化メソッドを変換して、オブジェクトの作成をより柔軟にします__del__
オブジェクトが破棄される前に実行したい場合は、__del__
メソッドを検討できるいくつかのことを実行してください
-
ライフサイクル
类名()
ライフサイクルを作成するための呼び出しからのオブジェクトが始まります__del__
メソッドが呼び出されると、オブジェクトはライフサイクルの終わりになります- オブジェクトのライフサイクル中に、オブジェクトのプロパティにアクセスしたり、オブジェクトにメソッドを呼び出させたりすることができます
class Cat:
def __init__(self, new_name):
self.name = new_name
print("%s 来了" % self.name)
def __del__(self):
print("%s 去了" % self.name)
# tom 是一个全局变量
tom = Cat("Tom")
print(tom.name)
# del 关键字可以删除一个对象
del tom
print("-" * 50)
5.2__str__
方法
Python
用いprint
、出力オブジェクト変数をデフォルトでは、この変数が出力されるオブジェクト参照がされているクラスのオブジェクト作成した製、並びにメモリのアドレス(16進数)- 開発中、
print
出力オブジェクト変数を使用したい場合は、カスタマイズされたコンテンツを印刷することが可能であり__str__
、の組み込みメソッドを使用できます。
注:
__str__
メソッドは文字列を返す必要があります
class Cat:
def __init__(self, new_name):
self.name = new_name
print("%s 来了" % self.name)
def __del__(self):
print("%s 去了" % self.name)
def __str__(self):
return "我是小猫:%s" % self.name
tom = Cat("Tom")
print(tom)