Pythonの:__ slots__魔法

Pythonは動的言語で
は通常、動的言語は、私たちは、実行時に新しいオブジェクトのプロパティとメソッドを結合するのを可能
にもアンバンドリングのプロパティとメソッドを持つようにバインドすることができ

、我々は、カスタム・オブジェクト・タイプを定義する必要がある場合にしかできバインドいくつかのプロパティは、
クラスで定義された変数__slots__によって定義することができます。
__slots__のみサブクラスが仕事をしない、現在のクラスのオブジェクトに対して有効になります

 

UKスロット[slɒts] 
US [slɑːts] 
Vが配信;挿入;(IS)に;(れる)を仕込み
三人称単数の[辞書]スロットを、
[実施例]挿入ガイドピン及び保持にスロットと。 
ザガイドピン挿入溝と固定されています。
[その他]プロトタイプ:スロット

 

class Person(object):
    # 限定Person对象只能绑定_name,_age,_gender属性
    __slots__ = ('_name', '_age', '_gender')

    def __init__(self, name, age):
        self._name = name
        self._age = age

    @property
    def name(self):
        return self._name

    @property
    def age(self):
        return self._age

    @age.setter
    def age(self, age):
        self._age = age

    def play(self):
        if self._age <= 16:
            print('%s正在画圈圈' % self._name)
        else:
            print('%s正在打飞机' % self._name)


def main():
    person = Person('王大锤', 22)
    person.play()
    person._gender = '男'
    # 非法访问一下 属性已经被我们放入了
    print(person._gender)


if __name__ == '__main__':
    main()

 

図の例:

 

公開された52元の記事 ウォン称賛34 ビュー2609

おすすめ

転載: blog.csdn.net/weixin_38114487/article/details/103956022