Pythonで使用__slots__(RPM)

私たちは、インスタンスのプロパティを制限したい場合は、Pythonは授業時間の定義は、特別の定義ができますスロットクラスのインスタンスの属性を制限するための変数を追加することができます。
使用スロットは、注目すべきであるスロット現在のクラスのインスタンスで定義されているが、効果がないサブクラスの継承にのみ属性働き
サブクラスを定義しない限り、スロットをするように、サブクラスのインスタンスの属性は、独自に定義することが許可されている、スロットをプラス親クラスのスロット

#のコード:UTF-8
クラス選手(オブジェクト):
    デフ__init __(自己、UID、名前、STAT = 0、レベル= 1):
        self.uid = UID
        self.name =名前
        self.stat = STAT
        self.level =レベル


クラスPlayer2(オブジェクト):
    __slots__ = [ 'UID'、 '名前'、 'STAT'、 'レベル'、 '性別']

    デフ__init __(自己、UID、名前、STAT = 0、レベル= 1):
        self.uid = UID
        self.name =名前
        self.stat = STAT
        self.level =レベル


クラスPlayer3(Player2):
    デフ__init __(自己、UID、名前):
        スーパー(Player3、自己).__のinit __(UID、名前)


クラスPlayer4(Player2):
    __slots__ = [ '年齢']

    デフ__init __(自己、UID、名前):
        スーパー(Player4、自己).__のinit __(UID、名前)

 

適用例スロット

例の多数を作成するために、メモリを節約するには?

問題:ゲーム、プレイヤーに定義されたクラスプレーヤー(UID、名前、ステータスが... )、 各サーバプログラムでオンラインプレイヤーを持って、プレイヤーのインスタンスがある、オンラインの人々の数が多くあるとき、それは多数のインスタンスを生成します(百万など)
解決策:クラス定義のスロット属性のインスタンス名のリストを宣言するために使用されたときに、プロパティを。

対話モードのP1およびP2の特性、使用P1 P2よりも多くのメモリ、そしてなぜ、比較することによって、複数のプロパティを参照してください__dict__との__weakref__



著者:udhga
リンクします。https://www.jianshu.com/p/c4484f424ef7
出典:ジェーンの本が
著者によって著作権で保護されています。著者は認可商業転載してください接触、非商用の転載は、ソースを明記してください。


おすすめ

転載: www.cnblogs.com/sidianok/p/12044151.html