Pythonでの例とは? わかりやすく解説

Pythonでの例

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/06 12:23 UTC 版)

メタクラス」の記事における「Pythonでの例」の解説

Python組み込み(ビルトイン)クラス typeメタクラスである。次に示す単純なPythonクラスについて説明するclass Car(object): __slots__ = ['make', 'model', 'year', 'color'] def __init__(self, make, model, year, color): self.make = make self.model = model self.year = year self.color = color @property def description(self): """ このCar説明返す """ return "%s %s %s %s" % (self.color, self.year, self.make, self.model) このコード実行した時、Cartypeインスタンスになっている上記Car クラスソースコードには __init__ メソッドCarインスタンス生成されるたびに呼ばれるといった細々としたことは記述されていないメタクラス用意されていない言語ではこのような振る舞い言語仕様定義されており、変更することは不可能である。Pythonではメタクラス type がこれらの動作決定しており、type代わりに違うメタクラス使用することでこれらの振る舞い変更することが可能である。 上に示した例は4つ属性 makemodelyearcolor辺り冗長である。メタクラス使えば、この冗長さを取り除くことが可能である。Pythonではメタクラスtypeサブクラスとして定義するのが最も簡単である。 class AttributeInitType(type): def __call__(self, *args, **kwargs): """ 新しインスタンス生成する """ # 普通にインスタンス生成する obj = type.__call__(self, *args) # 生成したインスタンス属性設定する for name in kwargs: setattr(obj, name, kwargs[name]) # 生成したインスタンス返す return obj このメタクラスインスタンス生成上書きしているだけで、他の機能はまだ type処理している。 さて、このメタクラス用いて Car クラス書き直すことが可能である。Python 2ではクラス定義中で __metaclass__ にこのメタクラス代入すればよい(Python 3では代わりに metaclass=M と名前付引数として与える)。 class Car(object): __metaclass__ = AttributeInitType __slots__ = ['make', 'model', 'year', 'color'] @property def description(self): """ Return a description of this car. """ return "%s %s %s %s" % (self.color, self.year, self.make, self.model) これで、Carインスタンス次のように生成できるcars = [ Car(make='Toyota', model='Prius', year=2005, color='green'), Car(make='Ford', model='Prefect', year=1979, color='blue')]

※この「Pythonでの例」の解説は、「メタクラス」の解説の一部です。
「Pythonでの例」を含む「メタクラス」の記事については、「メタクラス」の概要を参照ください。

ウィキペディア小見出し辞書の「Pythonでの例」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Pythonでの例」の関連用語

Pythonでの例のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Pythonでの例のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのメタクラス (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS