बस विवेक की खातिर, namedtuple को पहला तर्क आप के लिए असाइन करें चर नाम के रूप में एक ही होना चाहिए ज्ञात नहीं है:
>>> isinstance(pp,Point)
True
>>> isinstance(pp,P)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'P' is not defined
लेकिन अचार एक मॉड्यूल है कि classname कि typename से मेल खाता है खोजने के बारे में परवाह करता है है:
>>> import pickle
>>> ppp = pickle.dumps(pp)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python26\lib\pickle.py", line 1366, in dumps
Pickler(file, protocol).dump(obj)
File "c:\python26\lib\pickle.py", line 224, in dump
self.save(obj)
File "c:\python26\lib\pickle.py", line 331, in save
self.save_reduce(obj=obj, *rv)
File "c:\python26\lib\pickle.py", line 401, in save_reduce
save(args)
File "c:\python26\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "c:\python26\lib\pickle.py", line 562, in save_tuple
save(element)
File "c:\python26\lib\pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "c:\python26\lib\pickle.py", line 748, in save_global
(obj, module, name))
pickle.PicklingError: Can't pickle <class '__main__.P'>: it's not found as __main__.P
अगर मैं 'प्वाइंट' के रूप में परिभाषित namedtuple, तो अचार खुश है:
>>> Point = namedtuple('Point','x y')
>>> pp = Point(1,2)
>>> ppp = pickle.dumps(pp)
>>>
दुर्भाग्य से, यह आप पर निर्भर इस स्थिरता प्रबंधन करने के लिए है। नामांकित करने के लिए कोई तरीका नहीं है कि आप इसका आउटपुट कितना आवंटित कर रहे हैं, क्योंकि असाइनमेंट एक कथन है और पाइथन में ऑपरेटर नहीं है, इसलिए आपको सही वर्गनाम को नामांकित में पास करना होगा, और परिणामी वर्ग को एक वैरिएबल को असाइन करना होगा नाम।
संभव डुप्लिकेट [पायथन में "नामित टुपल्स" क्या हैं?] (Http://stackoverflow.com/questions/2970608/what-are-named-tuples-in-python) – b4hand