คำถามติดแท็ก magic-methods


14
Python __call__ ตัวอย่างวิธีการพิเศษ
ฉันรู้ว่า__call__วิธีการในชั้นเรียนจะถูกเรียกเมื่อมีการเรียกตัวอย่างของชั้นเรียน อย่างไรก็ตามฉันไม่ทราบว่าเมื่อฉันสามารถใช้วิธีพิเศษนี้ได้เพราะเพียงแค่สามารถสร้างวิธีการใหม่และดำเนินการเดียวกันใน__call__วิธีการและแทนที่จะเรียกตัวอย่างคุณสามารถเรียกวิธีการ ฉันจะขอบคุณมากถ้ามีคนให้ฉันใช้วิธีพิเศษนี้

7
ทำไม Python จึงใช้ 'magic method'?
เมื่อเร็ว ๆ นี้ฉันได้เล่นกับ 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
แอตทริบิวต์ __dict __.__ dict__ ของคลาส Python คืออะไร?
>>> 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
วิธี scala slick ฉันยังไม่เข้าใจ
ฉันพยายามทำความเข้าใจงานเนียนบางอย่างและสิ่งที่ต้องใช้ นี่คือตัวอย่าง: 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 วิธีการวิเศษ
เว้นแต่ฉันจะเข้าใจผิดอย่างสมบูรณ์วิธีการ__getและ__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'; …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.