2

Person と Manager の 2 つのクラスを定義しました。Manager は Person クラスを継承します。Person クラスをインポートしようとするとエラーが発生します。

コードを以下に示します。

Person.py

class Person:
    def __init__(self, name, age, pay=0, job=None):
        self.name = name
        self.age  = age
        self.pay  = pay
        self.job  = job

    def lastname(self):
        return  self.name.split()[-1]

    def giveraise(self,percent):
        #return self.pay *= (1.0 + percent)
        self.pay *= (1.0 + percent)
        return self.pay

Manager.py

from Basics import Person

class Manager(Person):
    def giveRaise(self, percent, bonus=0.1):
        self.pay *= (1.0 + percent + bonus)        
        return self.pay

エラー文:

C:\Python27\Basics>Person.py

C:\Python27\Basics>Manager.py トレースバック (最新の呼び出しが最後): ファイル "C:\Python27\Basics\Manager.py"、1 行目、基本インポートからの Person ImportError: 基本という名前のモジュールはありません

モジュールが見つからないというエラーが表示されるのはなぜですか?

4

4 に答える 4

6

import と PYTHONPATHの仕組みを調べる必要があります。あなたの場合、次を使用してそれを解決できます。

from Person import Person

あなたは Java のバックグラウンド (各ファイルにはファイルと同じ名前のクラスが必要です) から来ているようですが、それは Python モジュールのしくみではありません。

要するに、コマンド ラインから Python スクリプトを実行すると、現在のディレクトリで (他の場所の中でも) モジュールが検索されます。あなたがしたように (単純な) 名前をインポートすると、Python は以下を探します:

  1. という名前のファイルBasic.py。また:
  2. という名前のファイルを含む Basic という名前のフォルダー__init__.py

次に、そのモジュール内で という名前の定義を探しますPerson

于 2012-06-04T03:54:26.847 に答える
3

にあるので、 でPerson.pyはありませんBasics.py

from Person import Person
于 2012-06-04T03:53:20.183 に答える
3

Personという名前のファイルでクラスを定義しましたPerson.py。したがって、次のようにインポートする必要があります。

from Person import Person

小文字のモジュール名を使用するのが Python の規則であることに注意してください。たとえば、名前Person.pyperson.pyおよびManager.pyに変更しmanager.pyます。Person次に、次のようにクラスをインポートします。

from person import Person

モジュールがパッケージの一部である場合、personおそらく次のようにインポートする必要があります。

from .person import Person

これにより、Python 3 への移行が容易になります。

于 2012-06-04T03:53:23.820 に答える
0

from Basics import Personする必要がありますfrom Person import Person。インポート元の Basics.py モジュールがありません。

于 2012-06-04T03:54:47.057 に答える