Python呼び出し可能オブジェクトと可変オブジェクト
2469 ワード
一、呼び出し可能なオブジェクト
クラスでの定義_call__マジックメソッドで、作成したオブジェクトを関数のように呼び出すことができます.
彼はりんごを食べています.
通常、関数を1回呼び出すと破棄され、前回の呼び出しの結果は記録されません.これはステータスなしです.呼び出しオブジェクトに記憶機能を追加し、ステータスのある関数にしてPeopleクラスを変更することができます.
彼はりんごを食べています.彼はビスケットを食べています.彼は牛乳を食べています.彼は卵を食べています.彼は食べ物の順番はりんご-->ビスケット-->牛乳-->卵です.
二、可変オブジェクト
メタグループは可変オブジェクトであり、可変オブジェクトはスレッド同期によく使用され、__を使用することを知っています.slots__マジックメソッドでは、可変オブジェクトを作成できます.
可変オブジェクトかへんおぶじぇくと:使用__しようdict__属性現在のインスタンスの属性と属性値の表示
manオブジェクトのプロパティは:{'food':[],'hobby':'バスケットボール','age':'22歳','name':'王王'}manオブジェクトのプロパティは:{'food':[],'hobby':'バスケットボール','age':'22歳'}
クラスでの定義_slots__オブジェクトが自動的に置換されます.dict__オブジェクトを、可変オブジェクトに変換します.で_slots__で属性名を設定すると、_のみ使用できます.slots__に含まれる属性名です.そうしないと、例外がトリガーされます.
manオブジェクトのプロパティは、['food','hobby','age']
AttributeError: 'People' object has no attribute 'name'
クラスでの定義_call__マジックメソッドで、作成したオブジェクトを関数のように呼び出すことができます.
class People:
def __call__(self, food):
print(" {0}".format(food))
man = People()
man(" ")
彼はりんごを食べています.
通常、関数を1回呼び出すと破棄され、前回の呼び出しの結果は記録されません.これはステータスなしです.呼び出しオブジェクトに記憶機能を追加し、ステータスのある関数にしてPeopleクラスを変更することができます.
class People:
def __init__(self):
self.food = []
def __call__(self, food):
self.food.append(food)
print(" {0}".format(food))
def __str__(self):
return str.join("-->",self.food)
man = People()
man(" ")
man(" ")
man(" ")
man(" ")
print(" :",str(man))
彼はりんごを食べています.彼はビスケットを食べています.彼は牛乳を食べています.彼は卵を食べています.彼は食べ物の順番はりんご-->ビスケット-->牛乳-->卵です.
二、可変オブジェクト
メタグループは可変オブジェクトであり、可変オブジェクトはスレッド同期によく使用され、__を使用することを知っています.slots__マジックメソッドでは、可変オブジェクトを作成できます.
可変オブジェクトかへんおぶじぇくと:使用__しようdict__属性現在のインスタンスの属性と属性値の表示
class People:
def __init__(self):
self.food = []
self.hobby = " "
self.age = "22 "
def __call__(self, food):
self.food.append(food)
print(" {0}".format(food))
def __str__(self):
return str.join("-->",self.food)
man = People()
man.name = " "
print("man :",man.__dict__)
del man.name
print("man :",man.__dict__)
manオブジェクトのプロパティは:{'food':[],'hobby':'バスケットボール','age':'22歳','name':'王王'}manオブジェクトのプロパティは:{'food':[],'hobby':'バスケットボール','age':'22歳'}
クラスでの定義_slots__オブジェクトが自動的に置換されます.dict__オブジェクトを、可変オブジェクトに変換します.で_slots__で属性名を設定すると、_のみ使用できます.slots__に含まれる属性名です.そうしないと、例外がトリガーされます.
class People:
__slots__ = ["food","hobby","age"]
def __init__(self):
self.food = []
self.hobby = " "
self.age = "22 "
def __call__(self, food):
self.food.append(food)
print(" {0}".format(food))
def __str__(self):
return str.join("-->",self.food)
man = People()
print("man :",man.__slots__)
man.name = " "
manオブジェクトのプロパティは、['food','hobby','age']
AttributeError: 'People' object has no attribute 'name'