Страницы

Поиск по вопросам

пятница, 31 мая 2019 г.

Перегрузка метода внутри класса в Python

Всю жизнь писал на Java, начал изучать python в связи с чем появилось много вопросов. Например в Java можно писать вот так:
public class test { public static void main(String[] args) {
}
private void testrunner() {
}
private void testrunner(int i) {
}
private void testrunner(String c) {
} }
Как написать так же на питоне ? Ну вот пишу я так IDE сразу ругаться начинает
class test: def testrunner(self): pass def testrunner(self,a): pass


Ответ

В Python нет возможности перегрузить метод класса, как например в Java или С.
Но есть костыль. Метод может иметь значения параметров по-умолчанию, что совместно с проверкой типа аргумента позволит вам сделать то, что вы хотите:
from types import *
class Test(object):
def testrunner(self, i=None): if isinstance(i, str): print 'c: ', i elif isinstance(i, int): print 'b: ', i else: print 'a'

Комментариев нет:

Отправить комментарий