Использование пакета интерфейса приводит к ошибке issubclass () - PullRequest
0 голосов
/ 24 октября 2018

Я сейчас работаю над проектом, в котором мы решили использовать библиотеку interface вместо abc.Однако, когда я запускаю свою программу, появляется следующая ошибка:

Traceback (most recent call last):
  File "runner.py", line 1, in <module>
    from exchanges import *
  File "/Users/**/Projects/jimmy/characterlib/__init__.py", line 2, in <module>
    from exchanges import hitbtc
  File "/Users/**/Projects/jimmy/characterlib/soldier.py", line 5, in <module>
    class Soldier(implements(ICharacter)):
  File "/usr/local/lib/python3.7/site-packages/interface/interface.py", line 490, in implements
    if not issubclass(I, Interface):
TypeError: issubclass() arg 1 must be a class

Теперь мои настройки здесь действительно просты:

soldier.py:

from interface import implements, Interface
import characterlib.ICharacter as ICharacter

class Soldier(implements(ICharacter)):

ICharacter:

from interface import Interface

class ICharacter(Interface):
    def walk(self): pass

init .py:

import characterlib.ICharacter
import characterlib.Soldier

сейчас, как вы можете видеть, очень простая установка, однако мне не удается ее получитьбежать правильно.Как это возможно?

Есть ли у кого-нибудь еще опыт в этой теме?

Спасибо.

1 Ответ

0 голосов
/ 24 октября 2018

Ваши import суть не так.

import characterlib.ICharacter as ICharacter

означает, что ICharacter - это модуль, а не интерфейс.Просто измените объявление класса, чтобы решить это:

class Soldier(implements(ICharacter.ICharacter)):
    def walk(self):
        pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...