मैं कई उदाहरण online और कैसे विशेष ही टिककर खेल और setters साथ अजगर में गुण पैदा करने की in this forum देखा है। हालांकि, मुझे निष्पादित करने के लिए विशेष गेटर और सेटर विधियां नहीं मिल सकती हैं, न ही मैं @property सजावट का उपयोग रीडोनली के रूप में बदलने के लिए कर सकता हूं।अजगर 2.6.4 संपत्ति सज्जाकार काम नहीं कर रहा
मैं पायथन 2.6.4 का उपयोग कर रहा हूं और यहां मेरा कोड है। गुणों का उपयोग करने के लिए विभिन्न विधियां नियोजित हैं, लेकिन न तो काम करते हैं।
class PathInfo:
def __init__(self, path):
self.setpath(path)
def getpath(self):
return self.__path
def setpath(self, path):
if not path:
raise TypeError
if path.endswith('/'):
path = path[:-1]
self.__path = path
self.dirname = os.path.dirname(path)
self.basename = os.path.basename(path)
(self.rootname, self.dext) = os.path.splitext(self.basename)
self.ext = self.dext[1:]
path = property(fget=getpath, fset=setpath)
@property
def isdir(self):
return os.path.isdir(self.__path)
@property
def isfile(self):
return os.path.isfile(self.__path)
न केवल गुण, बल्कि सभी प्रकार के वर्णनकर्ता। –
एक और विकल्प फ़ाइल के शीर्ष पर '__metaclass __ = type' डालना है, जो सभी कक्षाओं को नया स्टाइल बना देगा। मुझे लगता है कि –
हालांकि प्रत्येक वर्ग के लिए स्पष्ट होना बेहतर है या आप इसे फ़ाइल के शीर्ष पर रखने के बजाय कक्षा में '__metaclass__' डाल सकते हैं। इस तरह केवल एक वर्ग में यह होगा। – gruszczy