旧班级发生了什么事?

时间:2019-04-29 07:57:31

标签: python

让我们说我有一个这样的课程:

class ContentConfigParser(object):
    def __init__(self,txt):
        try:
            with open (txt,'r') as conf:
                conflines = conf.readlines()
                self.width = conflines[0].strip()
                self.height = conflines[1].strip()

我正在这样使用它:

while 1:
    config= ContentConfigParser("settings.txt") #1
    #bla bla with config.width
    #peh peh with config.height 

我在(1)使用的旧类发生了什么? 是好的编码吗?

2 个答案:

答案 0 :(得分:0)

您拥有1的不是类,而是对象或实例。一旦没有参考剩余/超出范围,它们将被丢弃(或标记为垃圾收集器拾取)。因此,它们将在每次迭代中删除。问题是您是否不能在循环外部创建实例,然后在其内部继续使用它。

答案 1 :(得分:0)

我认为您可以将文件打开逻辑与另一个函数分开。

class ContentConfigParser(object):
    def __init__(self,txt):
        self.filename = txt
        self.openfile()

    def openfile(self):
        try:
            with open(txt, 'r') as conf:
                conflines = conf.readlines()
                self.width = conflines[0].strip()
                self.height = conflines[1].strip()
        except:
            pass

config= ContentConfigParser("settings.txt")

如果要重新读取文件,只需再次实例化该对象