Я пытаюсь понять полиморфизм в python. Прочитал много статей, но есть еще одно сомнение в моем уме. Когда я сравниваю с java, это немного смущает меня в Python.
Насколько я знаю, полиморфизм - это «одна вещь во многих формах». Полиморфизм может быть продемонстрирован с использованием перегрузки операторов и перегрузки методов. Давайте возьмем перегрузку метода как средство демонстрации концепции полиморфизма. В java мы можем написать это без использования наследования. См. Ниже код.
public class Main{
public static void main(String[] args) {
System.out.println(add(1,2));;
System.out.println(add(1,2,3));
}
public static int add(int a,int b){
return a+b;
}
public static int add(int a,int b,int c){
return a+b+c;
}
}
Python код:
class TestPolymorphism:
def add(self,a,b):
return (a+b)
def add(self,a,b,c):
return (a+b+c)
obj = TestPolymorphism()
print(obj.add(1,2)) #will get an error
print(obj.add(1,2,3))
Тот же метод перегрузки работает в java, но не в python. Почему есть разница? Если я хочу, чтобы он работал, я должен изменить свой python код, как показано ниже:
class TestPolymorphism:
def add(self,a,b,c=None):
if c ==None:
sum = a+b
return sum
else:
sum = a+b+c
return sum
obj = TestPolymorphism()
print(obj.add(1,2))
print(obj.add(1,2,3))
Я не уверен, что приведенный выше код является примером полиморфизма. Есть статья вроде this , которая не дает мне убедительного аргумента.
Может кто-нибудь дать мне теорию, стоящую за полиморфизмом в python?