Я пытаюсь понять полиморфизм в Python. Прошел много статьи, но в моей голове все еще есть одно сомнение. Когда я сравниваю с Java, это немного сбивает с толку в Python. Полиморфизм может быть продемонстрирован с использованием перегрузки оператора и перегрузки метода. Давайте принять метод перегрузки в качестве средства для демонстрации концепции полиморфизма. В Java мы можем написать это без использования наследования. См. Ниже код. < /P>
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;
}
}
< /code>
код Python: < /p>
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))
< /code>
Тот же метод перегрузка работает на Java, но не в Python. Почему есть разница?. Если я хочу, чтобы он работал, я должен изменить свой код Python, как ниже: < /p>
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))
< /code>
Я не уверен, что выше кода является примером полиморфизма. Есть такая статья, которая не дает мне убедительного пункта.>
Подробнее здесь: https://stackoverflow.com/questions/611 ... sm-in-java