Python - Перегрузка метода (с оператором oveloading) для переменных # аргументов? - PullRequest
0 голосов
/ 17 января 2020

Будучи новичком 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 понимания: (правильно меня, если я не прав)

  1. Метод Stati c с self в качестве второго аргумента, но встроенные операторы не могут быть перегружены в методе stati c.
  2. Перегрузка метода __mul__, но неуверенность в правильности / правильности принудительного применения self в качестве второго аргумента.

Заранее благодарны за любую помощь. Пожалуйста, прокомментируйте ниже, если вам нужна дополнительная информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...