web-dev-qa-db-ja.com

インポートされているにもかかわらずクラスが定義されていない

pythonスキルをブラッシュアップしようとしています、そしてクラスを書くことをいじくり回していますが、私は本当に混乱するエラーに遭遇したようです。私を含む.pyファイルをインポートしたにもかかわらず、クラス、pythonは、クラスが実際には存在しないことを主張しています。

クラス定義:

class greeter:
    def __init__(self, arg1=None):
        self.text = arg1

    def sayHi(self):
        return self.text

main.py:

#!/usr/bin/python
import testclass

sayinghi = greeter("hello world!")
print sayinghi.sayHi()

私が知る限り、私はすべてのドキュメントを「t」まで追跡しました。評価時間と作成時間の制約などのために引数をNoneに初期化することさえありました。 initは定義された最初の関数ですが、まだ役に立ちませんが、インポートが正常に機能していないという理論があります。

24
Damon Swayn

完全修飾名を使用します。

sayinghi = testclass.greeter("hello world!")

名前空間にimportをもたらすgreeterの代替形式があります。

from testclass import greeter
32
NPE
import testclass
# change to
from testclass import greeter

または

import testclass
sayinghi = greeter("hello world!")
# change to
import testclass
sayinghi = testclass.greeter("hello world!")

モジュール/パッケージをインポートしましたが、その中のクラスを参照する必要があります。

代わりにこれを行うこともできます

from testclass import *

名前空間の汚染 に注意してください

19
Christian Witts