मेरे पास पाइथन 2.6 के साथ एक मूल मोनोस्टेट है।मोनोस्टेट के साथ पाइथन बहिष्करण चेतावनी __new__ - क्या कोई समझा सकता है क्यों?
class Borg(object):
__shared_state = {}
def __new__(cls, *args, **kwargs):
self = object.__new__(cls, *args, **kwargs)
self.__dict__ = cls.__shared_state
return self
def __init__(self, *args, **kwargs):
noSend = kwargs.get("noSend", False)
reportLevel = kwargs.get("reportLevel", 30)
reportMethods = kwargs.get("reportMethods", "BaseReport")
contacts= kwargs.get("contacts", None)
a = Borg(contacts="Foo", noSend="Bar",)
कौन सा खुशी से मेरा पीछा अस्वीकार्यता चेतावनी देता है ..
untitled:4: DeprecationWarning: object.__new__() takes no parameters
self = object.__new__(cls, *args, **kwargs)
के बाद मैं इस खोजने के googling के एक बिट Bug #1683368 से जुड़ा हुआ है। जो मैं समझ नहीं सकता वह इसका क्या अर्थ है। यह निम्नलिखित पंक्ति
self = object.__new__(cls, *args, **kwargs)
के बारे में शिकायत कर रहा है जो ठीक प्रतीत होता है। क्या कोई लेमेन शर्तों में समझा सकता है कि यह एक समस्या क्यों है। मैं समझता हूं कि "यह अन्य अंतर्निर्मित, सूची की तरह असंगत है" लेकिन मुझे यकीन नहीं है कि मैं क्यों समझता हूं। क्या कोई मुझे यह दिखाने का सही तरीका बताएगा?
धन्यवाद
मैं देखना है कि वे कैसे नजरअंदाज कर दिया जाता नाकाम रहने रहा हूँ? नए से * args और ** kwargs निकालें और यह बम होगा क्योंकि उन्हें __init__ की आवश्यकता है जो उन्हें उम्मीद कर रहा है। आपका अंतिम विवरण वह है जिसे मैं रोकने की कोशिश कर रहा हूं :-) मैं इसे 3k में काम करना चाहता हूं। – rh0dium
मैं भाषा डिजाइनरों के साथ बहस नहीं कर सकता। अगर वे कहते हैं कि "नया कोई तर्क नहीं लेता है", तो मैं इसे कोई तर्क नहीं देता हूं। '__init__' और' __new__' फ़ंक्शन समान रूप से, शायद आपके उपयोग के मामले को नए के बजाय init का उपयोग करना चाहिए। –