为什么这个语法无效? (班级功能)

时间:2016-07-31 20:24:42

标签: python class

我想要输入的代码(python)如下所示:

class RainfallTable:
    def _init_ (self, njrainfall.txt):
        self.njrainfall.txt = open(njrainfall.txt, 'r')
    def close(self):
        if self.t:
            self.t.close()
            self.t = None

我试图让这个类简单地打开一个名为njrainfall.txt的文件,但是当我这样做时会收到以下错误消息:

  File "3Homework.py", line 2
def _init_ (self, njrainfall.txt):
                            ^

我做错了什么?

4 个答案:

答案 0 :(得分:3)

您的变量名中有.,这是python的无效语法。删除njrainfall.txt变量中的内容。一个很好的替代品是njrainfall_file或类似的东西。其次,init函数用两个下划线写成,如下所示:

def __init__(self, njrainfall_file):

这里有一些代码:

class RainfallTable:
    def __init__(self, njrainfall_file):
        self.njrainfall_file = open(njrainfall_file, 'r')
    def close(self):
        if self.t:
            self.t.close()
            self.t = None

确保将njrainfall_file作为文件名字符串传递!

答案 1 :(得分:0)

函数/构造函数应该只有变量作为输入

您可以将文本文件名和路径传递给该init函数

最好用绝对路径传递文本文件

class RainfallTable:
    def _init_ (self, textfile):
        self.t = open(textfile, 'r')
    def close(self):
        if self.t:
            self.t.close()
            self.t = None

将其称为RainfallTable('njrainfall.txt')

答案 2 :(得分:0)

看起来您对字符串,参数/变量名称和类对象感到困惑。

您使用的点必须是变量名称(njrainfall.txt),看起来像是具有实际文件名的字符串或对象属性。

正如其他人已经指出的那样,你不应该在变量/参数名称中使用点。

你应该使用(我添加了一个try..except来处理传递的文件名不存在的情况):

class RainfallTable:
  def _init_ (self, sRainFallFilename):
    try:
      self.rainfallFile = open(sRainFallFilename, 'r')
    except:
      self.rainfallFile = None
      print "file %s does not exist" % sRainFallFilename

  def close(self):
    if not self.rainfallFile == None :
        self.rainfallFile.close()
        self.rainfallFile = None

注意我还改变了close()方法以使用与init()

中相同的属性

然后你可以把这个类称为:

RainFallTable myRainFallTable( "NJ.txt" )
...
myRainFallTable.close()

答案 3 :(得分:0)

删除此处的续站

self.njrainfall.txt
别的什么。

self.njrainfall