は、Pythonは「module.class」に関するはAttributeErrorを投げます「はAttributeErrorモジュールのiterator_function 'が何の属性 『IteratorFunction』を持っていません」。 Intellisenceは私に、輸入が正しいことを教えてくれます。クラスが見つかります。のPython 3.5タイプヒンティングが与える:私は私のカスタムクラスにヒントを入力しようとすると
function_dispatcher.py、それは: iterator_function.IteratorFunction
で、このファイルにはうまくいきません。特定のタイプのヒントを削除すると、プログラムはうまく動作します。
from abc import ABC, abstractclassmethod
import iterator_function
class FunctionDispatcher(ABC):
@abstractclassmethod
def dispatch(self, function : iterator_function.IteratorFunction):
pass
iterator_function.py、これは輸入クラスです。注意:: function_dispatcher.FunctionDispatcher
へのヒンティングタイプがここで機能します。
import function
import function_dispatcher
class IteratorFunction(function.Function):
def accept(self, dispatcher : function_dispatcher.FunctionDispatcher):
dispatcher.dispatch(self)
これは、トレースバック出力されます:
1> Traceback (most recent call last):
1> File "C:\Users\admin\Documents\visual studio 2015\Projects\Preprocessor\Program\preprocessor\main.py", line 1, in <module>
1> import generator
1> File "C:\Users\admin\Documents\visual studio 2015\Projects\Preprocessor\Program\preprocessor\generator.py", line 3, in <module>
1> from iterator_function import IteratorFunction
1> File "C:\Users\admin\Documents\visual studio 2015\Projects\Preprocessor\Program\preprocessor\iterator_function.py", line 1, in <module>
1> import function
1> File "C:\Users\admin\Documents\visual studio 2015\Projects\Preprocessor\Program\preprocessor\function.py", line 2, in <module>
1> import function_dispatcher
1> File "C:\Users\admin\Documents\visual studio 2015\Projects\Preprocessor\Program\preprocessor\function_dispatcher.py", line 4, in <module>
1> class FunctionDispatcher(ABC):
1> File "C:\Users\admin\Documents\visual studio 2015\Projects\Preprocessor\Program\preprocessor\function_dispatcher.py", line 6, in FunctionDispatcher
1> def dispatch(self, function : iterator_function.IteratorFunction):
1> AttributeError: module 'iterator_function' has no attribute 'IteratorFunction'
誰もが私がやろうとしていますかと思っについて:visitor patternを実装します。
あなたは[円形インポート](https://docs.python.org/3.5/faq/programming.htmlを持っているように見えます#モジュールでのインポートを使用するためのベストプラクティス)。 –