〜オブジェクト指向のクラスのメンバー:プライベート、パブリックメンバーのメンバー、インスタンスメソッド、クラスメソッド、静的メソッド、プロパティ(プロパティ)、でisinstance、issubclass、メタクラス(タイプ)

パブリックメンバーのプライベートメンバー

  • 公開メンバー:どこからでもアクセスすることができます

  • 唯一のクラスへの内部アクセス:プライベートメンバー

    クラスがロードされてからは、限り出会いクラスのプライベートメンバーとして、クラス名とのプライベートメンバーの前になります_

方法2の例

方法の例としては、クラスを使用することができる方法であります

三つの方法

メソッドクラスのデコレータ@classmethod

クラスメソッド:一般的な方法は、呼び出し、自動的にクラス名CLSに対処するためのクラス名を介して行われ、

しかし、オブジェクトは呼び出しが、クラスのアドレスのアドレスまたは名前を渡すことができます。

class Student:
    count = 0
    def __init__(self,name,id):
        self.name = name
        self.id = id
        Student.stu_num()

    @classmethod
    def stu_num(cls):
        cls.count += 1
    @classmethod
    def get_num(cls):
        print(f'学生的数量是{cls.count}')

xiaohu = Student('小虎',123)
# xiaohu.get_num()
Student.get_num()

クラスメソッドの役割:

  1. オブジェクトを与えるためには、クラス名をインスタンス化することができます。
  2. Class属性が動作することができます。

四の静的メソッド

静的メソッドは、デコレータ@staticmethodを使用しています。

静的メソッドは、オブジェクトのクラスに依存しない、操作は、クラスのプロパティとメソッドを含んでいません。静的メソッドがあるとして理解することができ、簡単な独立した機能

規範的コード、合理的な部門。フォローアップメンテナンスが高いことを確認してください。

import time

class TimeTest(object):
    def __init__(self, hour, minute, second):
        self.hour = hour
        self.minute = minute
        self.second = second

    @staticmethod
    def showTime():
        return time.strftime("%H:%M:%S", time.localtime())

print(TimeTest.showTime())
t = TimeTest(2, 10, 10)
nowTime = t.showTime()
print(nowTime)

5つの属性プロパティ

動的なアプローチは、コードレベルではエレベーターはありませんが、プロパティを装っていますが、より合理的に見えるようにします。

class Foo:
    @property
    def AAA(self):
        print('get的时候运行我啊')

    @AAA.setter
    def AAA(self,value):
        print('set的时候运行我啊')

    @AAA.deleter
    def AAA(self):
        print('delete的时候运行我啊')
#只有在属性AAA定义property后才能定义AAA.setter,AAA.deleter
f1=Foo()
f1.AAA  # 执行property
f1.AAA='aaa' # 执行AAA.setter
del f1.AAA  # 执行AAA.deleter
class Foo:
    def get_AAA(self):
        print('get的时候运行我啊')

    def set_AAA(self,value):
        print('set的时候运行我啊')

    def delete_AAA(self):
        print('delete的时候运行我啊')
    AAA=property(get_AAA,set_AAA,delete_AAA) 
    #内置property三个参数与get,set,delete一一对应

f1=Foo()
f1.AAA
f1.AAA='aaa'
del f1.AAA

六でisinstance issubclass

でisinstance(B):クラスB(クラスB、または派生クラス)のオブジェクトをインスタンス化するか否かを判断します

issubclass(A、B)クラスは、クラスB(またはB派生クラス)の派生クラスか否かを判断します

七元のクラスタイプ

オブジェクトがクラスに属する取得します。

印刷(タイプ( 'ABC'))

Pythonの原理は次のとおりです。すべてのものは、実際には、クラスもまた、クラスを構築するためにクラスとタイプ元として知られている「オブジェクト」、パイソン(オブジェクトを含む)組み込みクラスのほとんどをだけでなく、クラスの独自の定義は、すべてのタイプの元として理解することができ、対象物でありますクラスの作成。

型クラスと、より固有のオブジェクトクラスとの関係:オブジェクトは、クラス型のインスタンスであり、型がオブジェクトクラスのクラスのサブクラスである、の関係を比較するには、の定義が他方の前に存在しなければならないので、Pythonのマジックは、コードで使用することができない表現しました。

おすすめ

転載: www.cnblogs.com/lav3nder/p/11802036.html