Вот проблема:
opener = testURLopener ()
, когда вы устанавливаете условие для инициализации, чтобы получить имя пользователя и пароль. Вы можете изменить аргументы на именованные вместо позиционных и установить значения по умолчанию с помощью следующего кода (вам потребуется правильное пространство имен для FancyURLopener):
def __init__(self, user="", passwd=""):
self.__user = user
self.__passwd = passwd
urllib.request.FancyURLopener.__init__(self)