オブジェクト指向:Pythonクラスの簡単な使用

01.dir組み込み関数

  • 対象ほとんどユビキタスである私たちが学ぶ前に、変数データを関数はオブジェクトでありますPython

InPythonは、次の2つの方法を使用して確認できます。

  1. 識別子/データの後に入力.プレスTABボタンは、iPythonすることができますが、オブジェクトを呼び出すように求めるメッセージが表示されます方法のリスト
  2. 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ケース

要求する

  • 子猫を食べるのが大好き、子猫飲むのが大好きです

分析

  1. 猫を定義する Cat
  2. 2つのメソッドを定義しeatdrink
  3. オンデマンド-属性を定義する必要はありません
class Cat:
    """这是一个猫类"""

    def eat(self):
        print("小猫爱吃鱼")

    def drink(self):
        print("小猫在喝水")

tom = Cat()
tom.drink()
tom.eat()

参照される概念の強調

オブジェクト指向開発では、参照の概念も同様に適用できます。

  • Python使用クラスは、オブジェクトを作成した後tom変数がまだ記録されているメモリ内のオブジェクトのアドレスを
  • つまり、tom変数新しい猫オブジェクトを参照ます
  • 使用print出力オブジェクト変数は、デフォルトでは、可変出力可能なオブジェクト参照がされているクラスのオブジェクトを作成なさ、並びにメモリのアドレス16進数

ヒント:コンピューターでは、通常、16進表現のメモリアドレス

  • %d10進数で数値を出力できます
  • %x16進数で数値を出力できます

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初期化方法

  • ときに类名()オブジェクトが作成され、それがなり、自動的に次の手順を実行します。
    1. オブジェクトに割り当てられたスペースのメモリ-オブジェクトの作成
    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__メソッド変換にすることができます。
    1. __init__メソッドのパラメーターとして定義された、プロパティセットの目的の値
    2. 内部self.属性 = 形参パラメータを使用する方法では、外部送信を受信しました
    3. オブジェクトを作成するときは、类名(属性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)

おすすめ

転載: blog.csdn.net/david2000999/article/details/112918049