タグ付けされた質問 「magic-methods」


14
Python __call__特殊メソッドの実用的な例
__call__クラスのインスタンスが呼び出されると、クラスのメソッドがトリガーされることを知っています。ただし、この特別なメソッドをいつ使用できるかわかりません。単に新しいメソッドを作成して、メソッドで行われたのと同じ操作を実行__call__でき、インスタンスを呼び出す代わりにメソッドを呼び出すことができるためです。 誰かがこの特別な方法の実用的な使用法を教えてくれれば本当にありがたいです。

7
Pythonが「マジックメソッド」を使用する理由
私は最近Pythonをいじっていますが、少し奇妙だと思うのは、「マジックメソッド」の広範な使用です。たとえば、その長さを利用できるようにしたり、オブジェクトがメソッドを実装したりしてdef __len__(self)、次のときに呼び出されます。あなたが書くlen(obj)。 なぜオブジェクトは単にlen(self)メソッドを定義せず、オブジェクトのメンバーとして直接呼び出されるのか疑問に思っていましたobj.len()。Pythonがそのようにそれを行うには十分な理由があるに違いないと私は確信しているが、初心者として、私はそれらが何であるかをまだ解明していない。

3
python numpy.where()はどのように機能しますか?
私はnumpyドキュメントをいじって、調べていて、いくつかの魔法に出会いました。つまり、私は話しているnumpy.where(): >>> x = np.arange(9.).reshape(3, 3) >>> np.where( x > 5 ) (array([2, 2, 2]), array([0, 1, 2])) あなたはx > 5メソッドに何かを渡すことができるということを内部でどのように達成しますか?何か関係があると思います__gt__が、詳しい説明を探しています。

4
Pythonクラスの__dict __.__ dict__属性とは何ですか?
>>> class A(object): pass ... >>> A.__dict__ <dictproxy object at 0x173ef30> >>> A.__dict__.__dict__ Traceback (most recent call last): File "<string>", line 1, in <fragment> AttributeError: 'dictproxy' object has no attribute '__dict__' >>> A.__dict__.copy() {'__dict__': <attribute '__dict__' of 'A' objects> ... } >>> A.__dict__['__dict__'] <attribute '__dict__' of 'A' objects> # What …

2
スカラスリック方式今までわからない
私はいくつかのスリック作品とそれが必要とするものを理解しようとします。 ここに例を示します: package models case class Bar(id: Option[Int] = None, name: String) object Bars extends Table[Bar]("bar") { def id = column[Int]("id", O.PrimaryKey, O.AutoInc) // This is the primary key column def name = column[String]("name") // Every table needs a * projection with the same type as the table's type parameter …

8
PHPの__getおよび__setマジックメソッド
私が完全に間違えない限り、__getand__setメソッドは→getとset。のオーバーロードを許可することになっています。 たとえば、次のステートメントは__getメソッドを呼び出す必要があります。 echo $foo->bar; $var = $foo->bar; そして、以下はこの__set方法を使用する必要があります。 $foo->bar = 'test'; これは私のコードでは機能していなかったので、次の簡単な例で再現できます。 class foo { public $bar; public function __get($name) { echo "Get:$name"; return $this->$name; } public function __set($name, $value) { echo "Set:$name to $value"; $this->$name = $value; } } $foo = new foo(); echo $foo->bar; $foo->bar = 'test'; echo …

4
Pythonユーザー定義クラスをソート可能、ハッシュ可能にする
ユーザー定義クラスをPythonでソート可能および/またはハッシュ可能にする場合、どのメソッドをオーバーライド/実装する必要がありますか? 注意すべき落とし穴は何ですか? dir({})インタプリタに入力して、組み込みのdictのメソッドのリストを取得します。それらのうち、私はいくつかのサブセットを実装する必要があると思います ['__cmp__', '__eq__', '__ge__', '__gt__', '__hash__', '__le__', '__lt__', '__ne__'] Python2とは対照的にPython3に実装する必要のあるメソッドに違いはありますか?

2
IDEのマジック(_callおよび_callStatic)メソッドを文書化する方法
notepad ++と崇高なコーディングで何年も幸せに過ごした後、PHPIDEを試してみるようにアドバイスされました。phpStormを試していますが、良さそうです。コードの完成とドキュメント化は素晴らしい機能ですが、魔法のメソッドを使用するとうまくいきません。phpStormに魔法のメソッドで何が起こっているのかを理解させるための回避策はありますか? 私たちの状況は次のようなものです。 abstract class a { public static function __callStatic($method,$args) { if(strpos($method,"get_by_") === 0) { //do stuff } elseif(strpos($method,"get_first_by_") === 0) { //do stuff } elseif($method == "get_all") { //do stuff } } } class b extends a { // some more stuff } b::get_by_user_id(27); b::get_first_by_id(156); b::get_all(); 魔法のcallStaticメソッドを使用すると、関数呼び出しを構成する1つ以上の引数を介してオブジェクトのコレクションを取得できます。 これらの場合に使用する@methodステートメントがあるようですが、phpStormはこれらのステートメントの最初のものだけを取得しています。さらに、戻り値の型を混合に設定できるのは、これが呼び出されたクラス(私の例ではb)として設定できるようにしたい場合のみです。 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.