2017-05-11 4 views
0

この行はPythonで何をしますか?上記とこの定義の違いはインスタンス()はPythonで何をしますか?

@magics_class 
class UserMagics(Magics): 
    """Placeholder for user-defined magics to be added at runtime. 

は何ですか?:UserMagicsは、このようなIPython.core.magics.__init__.pyで定義された空のクラスであることを

user_magics = Instance('IPython.core.magics.UserMagics', allow_none=True) 

ノート

user_magics = UserMagics() 

以下のBlenderが指摘しているように、これはtrailetsパッケージの一部であり、Pythonはベースではありません。

+1

'Instance'は、Pythonの一部ではありません。 –

+0

これは 'traitlets'パッケージに書かれています:https://traitlets.readthedocs.io/en/stable/trait_types.html#classes-and-instances – Blender

答えて

1

Instanceは、traitlets packageの一部です。ドキュメントから:属性が変更された場合要するに

、traitletsは、ユーザーが

  1. 型チェックを持つ属性(特徴)と動的に計算デフォルト値
  2. 形質が変更イベントを発するを持つクラスを定義してみましょう
  3. traitletはいくつかのバリデーションを実行し、割り当て時に新しいtrait値の強制を可能にします。また、他の 属性の値に基づいて属性の検証ロジックをカスタム 定義することもできます。

ここでは、具体的Instanceを使用して、パッケージが何をするかの例です:

from traitlets import HasTraits, Int, Instance 

class Foo(object): 
    pass 

class MyObject(HasTraits): 
    num = Int() 
    foo = Instance(Foo, allow_none=True) 

if __name__ == '__main__': 
    # works 
    a = MyObject() 
    a.num = 10 
    a.foo = Foo() 

    # works 
    b = MyObject() 
    b.num = 5 
    b.foo = None 

    # breaks 
    c = MyObject() 
    c.num = -1 
    c.foo = object() # The 'foo' trait of a MyObject instance must be a Foo or None, but a value of type 'object' was specified. 
+0

まさに私が探していたものです。 traitletsを含む質問のタグを更新しました。 –

関連する問題