2016-08-03 7 views
0

私は同じディレクトリに2つのPythonファイルを持っています。 one.pyとtwo.pyはそれぞれクラスFirstとSecondを含んでいます。 インポートクラスを持ち、互いに継承し、お互いに定義されたメソッドを使用します相互に継承したPythonクラス

one.py

from two import Second 
class First(Second): 
    def first(self): 
     print "first" 

two.py

from one import First 
class Second(First): 
    def second(self): 
     print "second" 

私はエラー以下になっていコンパイル中。私がこれを克服できる方法はありますか?別の方法も提案してください。

Traceback (most recent call last): 
    File "C:\Users\uvijayac\Desktop\New folder\two.py", line 1, in <module> 
    from one import First 
    File "C:\Users\uvijayac\Desktop\New folder\one.py", line 1, in <module> 
    from two import Second 
    File "C:\Users\uvijayac\Desktop\New folder\two.py", line 1, in <module> 
    from one import First 
ImportError: cannot import name First 
+0

継承は、マトリックスではなくトップダウン階層であることを意味します。あなたのデザインを再考する必要があります。 – cdarke

+0

子クラスが親クラスのメソッドを使用する必要がある場合の対処方法。 –

+0

これは問題ありません。それはルールを破る別の方向(子供の方法を使用する親)です。 – cdarke

答えて

1

あなたが遭遇している実際の問題は、あなたの循環的な継承とは関係のない循環的なインポートをしようとしていることです。 (それを回避する方法については、SOの資料がたくさんあります)。

ただし、クラスは一度定義されるとサブクラス化され、その定義にはサブクラス化されたものが含まれているため、循環継承もできませんしたがって、すでに定義されている必要があります。これは、ポイントを取得する必要があります。循環的な継承はできません。