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

7
ทำความเข้าใจกับ __get__ และ __set__ และ Python descriptors
ฉันกำลังพยายามเข้าใจว่า Python descriptors คืออะไรและมีประโยชน์อย่างไร ฉันเข้าใจว่าพวกเขาทำงานอย่างไร แต่นี่คือข้อสงสัยของฉัน พิจารณารหัสต่อไปนี้: class Celsius(object): def __init__(self, value=0.0): self.value = float(value) def __get__(self, instance, owner): return self.value def __set__(self, instance, value): self.value = float(value) class Temperature(object): celsius = Celsius() เหตุใดฉันจึงต้องใช้คลาส descriptor อะไรinstanceและownerที่นี่ (ใน__get__) วัตถุประสงค์ของพารามิเตอร์เหล่านี้คืออะไร? ฉันจะโทร / ใช้ตัวอย่างนี้ได้อย่างไร
310 python  descriptor 

7
จะเรียกคุณสมบัติของคลาสฐานได้อย่างไรหากคุณสมบัตินี้ถูกเขียนทับในคลาสที่ได้รับ
ฉันกำลังเปลี่ยนคลาสของฉันจากการใช้ getters และ setters อย่างกว้างขวางเป็นการใช้คุณสมบัติ pythonic มากขึ้น แต่ตอนนี้ฉันติดขัดเพราะ getters หรือ setters ก่อนหน้าของฉันบางคนจะเรียกเมธอดที่สอดคล้องกันของคลาสพื้นฐานแล้วดำเนินการอย่างอื่น แต่จะสำเร็จด้วยสรรพคุณได้อย่างไร? จะเรียกคุณสมบัติ getter หรือ setter ในคลาสพาเรนต์ได้อย่างไร? แน่นอนว่าการเรียกใช้แอตทริบิวต์นั้นจะทำให้เกิดการเรียกซ้ำไม่สิ้นสุด class Foo(object): @property def bar(self): return 5 @bar.setter def bar(self, a): print a class FooBar(Foo): @property def bar(self): # return the same value # as in the base class return self.bar …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.