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

当我运行它时,我收到错误消息:'module' object is not callable。谁能帮我理解如何正确输入我的数据?

4

1 回答 1

3

问题是您有一个文件 Movie.py,其中包含一个巧合地名为 Movie 的类。如果你只是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 回答