0

さて、作成したモジュールをメイン プログラムにインポートしました。私はまだクラスを理解しようとしていると思いますが、実際にデータをクラスに入力する方法がわかりません。これは Python 3 です。モジュールは次のとおりです。

class Movie:
    def __init__(self, Title = '', Ratings = []):
        self.Movie = Title
        self.Ratings = Ratings
        self.TotalRatings = 0
        self.minusFive = 0
        self.minusThree = 0 
        self.one = 0
        self.three = 0
        self.five = 0
        self.ValidRatings = [-5,-3,1,3,5]

    def __str__(self):
        return '{0} has {1} total ratings with an average rating of {3}.'.format(self.title, self.totalRatings, self.AvgRating)
    def __repr__(self):
        return self.__str__()
    def AddRating(self, rating):
        for num in self.Ratings:
            if num in self.ValidRatings:
                self.totalRatings += 1 
            else:
                continue
    def AvgRating(self):
        return sum (self.totalRatings)/len(self.totalRatings)

以下は私のメインプログラムの始まりです:

import Movie

def ReadFile(FileName):
    F = open(FileName)
    return F.readlines()

File = ReadFile('Ratings.txt') 
File2 = open('Prog5Titles.txt').read()       #open movie titles file

movie1 = Movie("The Avengers", [5,5,5])     #this is just a sample to help me understand

これを実行すると、「モジュール」オブジェクトは呼び出し可能ではありませんというエラー メッセージが表示されます。私のデータをこれに正しく入力する方法を理解してくれる人はいますか?

4

1 に答える 1

3

問題は、偶然にも Movie という名前のクラスを含むファイル Movie.py があることです。だけの場合import Movie、Python 名 Movie はファイル Movie.py の内容を参照し、そこに隠れているクラスを参照するには、次のように記述する必要があります。

 movie1 = Movie.Movie("The Avengers", [5,5,5])

または、次のようにインポートすることもできます。

from Movie import Movie

そして今、Python 名の Movie は別のものを指しています — ファイル Movie.py 内の Movie という名前の「もの」(この場合はクラス) です。

ファイル内で定義されたクラスとは異なるclass Movie名前を含むファイルに名前を付けた場合、これは少し明確になります。多分か何か。プロジェクトに追加のクラス (Actor、Studio) があり、それらのクラスはおそらくクラス Movie と同じファイルで定義されると考えてください。movie_stuff.py

于 2012-11-03T02:25:32.167 に答える