Будучи новичком ie в отношении объектно-ориентированного подхода, я практикую класс, используя это:
import numpy as np
class complex():
def __init__(self, arg1, arg2 = None):
self.real = arg1
if arg2 == None:
self.imag = 0
else:
self.imag = arg2
self.num = np.complex(self.real, self.imag)
def __mul__(self, other):
if np.iscomplex(other):
return np.multiply(self.numb, other.num)
else:
return np.multiply(self.num, other)
def __str__(self):
return "Foo"
def test():
a = complex(3)
b = complex(1, 5)
print(a * b)
if __name__ == "__main__":
test()
Я пытаюсь перегрузить оператор *
одновременно, обрабатывая метод класса __mul__
, поскольку Я получил различные варианты передачи аргументов. Приведенный выше код может делать (object, object)
или (object, 'int')
.
Как передать self
в качестве второго аргумента что-то вроде ('int', object)
?
Вещи, которые я пробовал из моего базового c понимания: (правильно меня, если я не прав)
- Метод Stati c с
self
в качестве второго аргумента, но встроенные операторы не могут быть перегружены в методе stati c. - Перегрузка метода
__mul__
, но неуверенность в правильности / правильности принудительного применения self
в качестве второго аргумента.
Заранее благодарны за любую помощь. Пожалуйста, прокомментируйте ниже, если вам нужна дополнительная информация.