คำถามติดแท็ก monkeypatching

16
การเพิ่มวิธีการไปยังอินสแตนซ์ของวัตถุที่มีอยู่
ฉันอ่านว่ามันเป็นไปได้ที่จะเพิ่มวิธีการในวัตถุที่มีอยู่ (เช่นไม่ได้อยู่ในคำจำกัดความของชั้นเรียน) ใน Python ฉันเข้าใจว่ามันไม่ดีเสมอไป แต่คนเราจะทำสิ่งนี้ได้อย่างไร?

8
การปะของลิงคืออะไร
ฉันกำลังพยายามที่จะเข้าใจการปะของลิงหรือแผ่นปะของลิงคืออะไร นั่นคือวิธีการ / ผู้ประกอบการมากไปหรือการมอบหมาย? มันมีอะไรที่เหมือนกันกับสิ่งเหล่านี้หรือไม่?

3
เมื่อลิงปะวิธีอินสแตนซ์คุณสามารถเรียกวิธีการแทนที่จากการใช้งานใหม่ได้หรือไม่?
สมมติว่าฉันกำลังแก้ไขวิธีการลิงในชั้นเรียนฉันจะเรียกวิธีการแทนที่จากวิธีการเอาชนะได้อย่างไร นั่นคือบางสิ่งบางอย่างเช่นsuper เช่น class Foo def bar() "Hello" end end class Foo def bar() super() + " World" end end >> Foo.new.bar == "Hello World"

24
วิธีการเพิ่มคุณสมบัติให้กับคลาสแบบไดนามิก?
เป้าหมายคือการสร้างคลาสจำลองซึ่งทำหน้าที่เหมือนชุดผลลัพธ์ db ตัวอย่างเช่นถ้าเคียวรีฐานข้อมูลส่งคืนโดยใช้นิพจน์ dict {'ab':100, 'cd':200}แล้วฉันต้องการดู: >>> dummy.ab 100 ตอนแรกฉันคิดว่าฉันอาจทำแบบนี้ได้: ks = ['ab', 'cd'] vs = [12, 34] class C(dict): def __init__(self, ks, vs): for i, k in enumerate(ks): self[k] = vs[i] setattr(self, k, property(lambda x: vs[i], self.fn_readyonly)) def fn_readonly(self, v) raise "It is ready only" if __name__ == "__main__": …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.