Как передать аргумент в класс? - PullRequest
0 голосов
/ 05 августа 2020

Мы переходим на Python 3, и я хочу передать строку в качестве аргумента классу, но получаю сообщение об ошибке:

str() argument 2 must be str, not tuple
if _python3_available():
    param_urllib = "urllib.request.FancyURLopener" # py3
else:
    param_urllib = "urllib.FancyURLopener" # py2

class SVNPicker(param_urllib):
[...]

Я не уверен если я могу передать строку в качестве параметра в классе. Проблема в том, что мне нужно быть совместимым с Python 2 и 3.

1 Ответ

2 голосов
/ 05 августа 2020

Параметр должен быть классом , а не его именем:

if _python3_available():
    from urllib.request import FancyURLopener  # py3
else:
    from urllib import FancyURLopener  # py2


class SVNPicker(FancyURLopener):
    ...
...