मैं एक वर्ग को परिभाषित और लहरिल ऑपरेटर को ओवरराइड करने की कोशिश की:क्या पाइथन में बाइनरी वाले एक यूनरी ऑपरेटर को ओवरराइड करने की संभावना है?
class foo:
def __invert__(self, other)
return 1232 # a random number , just as test
फिर बुला इसे पसंद:
>>> f = foo()
>>> g = foo()
>>> f ~ g
File "<input>", line 1
f ~ g
^
SyntaxError: invalid syntax
हम एक द्विआधारी एक के साथ टिल्ड ऑपरेटर की जगह ले सकता तो हम जैसे एक ऑपरेशन कर सकते हैं एक वाक्यविन्यास त्रुटि उठाए बिना f ~ g
।
नहीं, नहीं है। –
पायथन को स्वयं संशोधित किए बिना, नहीं (हालांकि यदि आप चाहें तो ऐसा कर सकते हैं - उदाहरण के लिए http://stackoverflow.com/questions/214881/can-you-add-new-statements-to-pythons-syntax परिचय के लिए)। – jonrsharpe
@jonrsharpe: और फिर भी, कैसे होगा द्वारा ऑपरेंड की संख्या कार्यावधि में बदल * *? आपका एकमात्र विकल्प '~' ऑपरेटर को पूरी तरह से बदलना होगा, आप रनटाइम पर 1 या 2 ऑपरेंड के बीच नहीं चुन सकते हैं। –