オブジェクト指向のPythonの基本クラスのメソッド及びクラスに関連する属性、及び反射魔法

クラスメソッド
の一般的な方法:パラメータなし、唯一のクラスコール
バインド方法:クラス(自動変速機パラメータ)にオブジェクト(自動的に渡されたオブジェクトパラメータ)に(1)バインド(2)結合
のいずれか:静的メソッドクラスやオブジェクトのメソッドを呼び出すことができます

。#
クラスの犬():
    DEF __init __(自己、名):
        self.name =名

    #通常の方法の
    DEFの交通を():
        印刷( "子犬が呼び出す")

    #バインドメソッドオブジェクトに
    DEFの天(セルフ):
        (「犬の骨を舐めるように」)の印刷を

    クラスメソッドにバインドされた#が
    @classmethod
    DEFチー(CLS)を:
        印刷(CLS)
        を印刷(「犬肉を食べるのが好き」)

    #静的メソッド
    @staticmethod
    :DEFジャンプ()
        プリント( "犬はその後フリスビーのようにジャンプ")

は、オブジェクトをインスタンス化
OBJ =犬( "黒")

#(1)通常の方法
Dog.jiao()
オブジェクトは、クラスによって呼び出すことができない。方法

#は、(2)オブジェクトのメソッドに結合
obj.tian()

を使用して、#Dog.tian(123)を呼び出すクラスを主張する場合、引数を満たします(確率論的値)に対応する

(3)#オブジェクトのメソッドに結合
Dog.chi()
メソッドへの#オブジェクト結合呼び出し可能であるクラス
オブジェクトクラスに属する人を見つけるために#は、その後でこのクラス送信
obj.chi()

 (4)静的メソッド
obj.jump()
Dog.jump()

クラスに関連付けられている魔法の属性

クラス人間():
    パス・

クラスマン():
    パス・

クラスの女():
    パス


子供のクラス(男、女):
    「」「
    :子記述のような関数
    クラス属性のメンバーを:目の
    メンバー・メソッドクラス:SLEEPの__beat_doudouを
    」「」
    ・アイ=「青い目」
    #一般的な方法は、
    デフ(食べます):
        印刷(「子どもたちが栄養価の高いものを食べる必要がある」)

    #バインド方法
    DEF SLEEP(セルフ):
        プリント(「寝るのが好き子供」)

    DEF飲む(自己):
        プリント(「子どもたちは常に多量の水を飲む必要がある」)

    DEFクライ(自己、FUNC):
        RES = FUNC .__ name__の
        印刷(RES、タイプの(RES))

    #プライベートな結合方法
    DEF __beat_doudou(セルフ):
        印刷(「子供たちはエンドウ豆を再生したい」)

#__dict__ メンバーのオブジェクトまたはクラスの内部構造を取得
子供=のOBJ()
RESの=のOBJ。__dict__
#__dict__所有権クラスのメンバの内部構造を表示する方法はありませんとのすべてのオブジェクトのクラスがあります
印刷(RES)#解像度の空のように、
印刷(子供.__ dict__にマジック)

#__doc__ ドキュメントオブジェクトまたはクラス内で取得し
表示するdoc__内の例題のres =子供.__
印刷(RES)

「」 '
出力:
    クラス関数は:子の記述
    クラス属性のメンバーを:目の
    クラスのメンバメソッド:SLEEPの__beat_doudouは
' ''
は__name__ 関数名のクラス名を取得
:DEFてmyfunc()
    を印刷( "私は機能だ")
<str'はobj.cry(myfunc関数)#てmyfuncクラス>'
#__class__ GET電流をクラスオブジェクトが属する
RES = OBJ .__ class__がある
印刷(RES)#< '__main __。子どもの'クラス>

#__bases__ クラスを取得することが直接、すべての親クラスを継承しタプルを返し
RESの=子供.__ bases__の
(RES)を印刷します

三つ反射
#の概念ストリングクラスのオブジェクトによって操作する か、 モジュールがmethod属性
)#(1)はhasattrを(オブジェクト検出/ 指定されたメンバーが存在する場合クラスを [ 自動的にか否かに基づい呼び出す]
#はII使用をOBJ

RES =はhasattr(OBJ、 "アイ")
を印刷(RES)

RES =はhasattr(子供たちは、 "EAT")
印刷が(RES)は#がプレゼンス指定Trueを返します

(2)のgetattr(#)をオブジェクト取得/ クラスメンバーシップ値を
RES = GETATTR (OBJ、 "目")
印刷(RES)#青い目の

RES = GETATTR(OBJ、 "スリープ")
を印刷(RES)#は、それがバインドされたメソッドを返します
#の子供が寝るのが好き)(RESを

モード#クラスを
= GETATTRのRES(子供たちは、 "EAT")
印刷が(RES)
RES()#の子供が何か栄養価の高い食事をする必要が

RESを= GETATTR(子供、 "SLEEP")
印刷(RES)#それは、すべての必須結合方法ではありませんあなたは好きなよう必要な
RESを(1)

買収がこの値より小さい場合は三番目のパラメータのgetattr#はオプションで、デフォルトのプロンプトを追加することができ、エラー防止
(OBJ、「ABC RES = GETATTR 」、「 私は私がしなかったことを申し訳ない」)
を印刷( RES)

#= strvar入力(「あなたが呼び出したい関数を入力してください。」)
#場合はhasattr(OBJ、strvar):
GETATTR RES =#(OBJ、strvar)
#RES()

#(。3)SETATTR は()オブジェクトを設定します/ 値のクラスメンバー
SETATTR(OBJ、 "髪"、 " 黒")
を印刷(obj.hair)
」、SETATTR(子供をスキン""緑")
印刷(Children.skin)

#(4)delattr()オブジェクトの削除/ 値クラスのメンバーが
delattr(OBJ、"髪")
印刷(obj.hair)

delattrを(子供たちは、"スキン「)
印刷#(Children.skin)

#(2)モジュール反射
#1 sys.modulesは、システム辞書を返し辞書のキーが全て読み込まれたモジュールを

3:
インポートSYS
RESはsys.modulesの=
プリント(RES)
実行しているかどうかを印刷(__ name__)#1 __main__マスタファイルを
MyModuleというsys.modules = [__ name__】
プリント(MyModuleという)#印刷マスターモジュール

)(DEFの関数func1を:
    印刷( "この方法は、関数func1「)である

:DEFの関数func2()
    それはfunc2の方法だ印刷(」「)

DEFのFUNC3():
    印刷(」それはFUNC3法「だ)

文字列に#ユーザー私は、私が対応するメソッドを反映呼び出し
トゥルーながら:
    strvar =入力( "あなたが呼び出したいメソッドを入力してください:")
    :はhasattr(のmymodule、strvar)IF
        _func_ = GETATTR(のmymodule、strvar)
        _func_()
        この関数は、入力した機能を継承すること#(注)、
        #すべての入力の場合_ myfunc関数は、関数の内容を印刷します、関数名はすべて、少し特別な取得
    、他:
        印刷(「兄貴、ないの。」)

 

おすすめ

転載: www.cnblogs.com/hszstudypy/p/10964067.html