Python'da, bir nesnenin __add__
yöntemini (veya diğer çift alt çizgi aka "dunder" yöntemlerini) aşırı yükleyebilirim. Bu, Python operatörlerini kullanırken nesnelerim için özel davranışı tanımlamamı sağlar.Bir nesnede çağrılan + veya __add__ bilgisinin bilinmesi
Yöntem, +
aracılığıyla veya __add__
aracılığıyla çağrılmışsa, dunder yönteminden bilmek mümkün müdür? Örneğin
, doğrudan olarak adlandırılan +
kullanılması halinde veya __add__
halinde bağlı "+"
veya "__add__"
yazdırır bir nesne oluşturmak isteyen varsayalım. method_how_created
gibi bazı büyü varlığını Barring
class MyAdder(object):
def __add__(self, other):
print method_how_created()
return 0
MyAdder() + 7
# prints "+", returns 0
MyAdder().__add__(7)
# prints "__add__", returns 0
, yöntemleri dunder için sembollerin bir kanonik haritalama var mı? http://www.python-course.eu/python3_magic_methods.php ya da operator
modülünün belgesellerini ayrıştırmaya dayalı çözümler var, Access operator functions by symbol. Fonksiyon isimleri ile semboller arasında bir haritayı bulmanın bir yolu var mı?
Neden böyle bir şey istersiniz? – wnnmaw
Lütfen yanılıyorsam düzeltin, ama '' '' '' __add__''ı çağırmıyor mu? –
@ OrangeFlash81 bunu yapar. Ve 'NotImplemented' için' __radd__' ' – Bharel