कई अतिरिक्त @properties के साथ नामित किए जा सकते हैं या subclassed कैसे?
कुछ के लिए, कोई भी नीचे दिए गए पाठ को लिख सकता है; लेकिन कई, हैं इसलिए मैं जनरेटर या संपत्ति कारखाने की तलाश में हूं। एक तरीका _fields
से टेक्स्ट जेनरेट करना होगा और इसे निष्पादित करना होगा; दूसरा रनटाइम पर एक ही प्रभाव के साथ एक add_fields होगा।
(मेरे @props पंक्तियों और क्षेत्रों पाने के लिए एक डेटाबेस में कई तालिकाओं में फैले, ताकि rec.pname
persontable[rec.personid].pname
है कर रहे हैं; लेकिन namedtuples-साथ स्मार्ट क्षेत्रों अन्य होता भी उपयोग करता है।)कई @properties के साथ पाइथन नामकरण का विस्तार?
""" extend namedtuple with many @properties ? """
from collections import namedtuple
Person = namedtuple("Person", "pname paddr") # ...
persontable = [
Person("Smith", "NY"),
Person("Jones", "IL")
]
class Top(namedtuple("Top_", "topid amount personid")):
""" @property
.person -> persontable[personid]
.pname -> person.pname ...
"""
__slots__ =()
@property
def person(self):
return persontable[self.personid]
# def add_fields(self, Top.person, Person._fields) with the same effect as these ?
@property
def pname(self):
return self.person.pname
@property
def paddr(self):
return self.person.paddr
# ... many more
rec = Top(0, 42, 1)
print rec.person, rec.pname, rec.paddr
क्या आपने वहां अपने स्वयं के प्रश्न का उत्तर नहीं दिया? –
मुझे प्रश्न समझ में नहीं आता है। शायद आप गुणों को टुपल में दिखाना चाहते हैं? यदि आप चाहते हैं तो गेटिटम को ओवरराइट करें। – Pepijn
मैं भी उलझन में हूँ। ऐसा लगता है कि आप जिस प्रभाव के बारे में पूछ रहे हैं उसे पाने के लिए आपको वास्तव में क्या करना चाहिए। आपकी क्या समस्या हैं? – Omnifarious