类和将模块导入类

时间:2013-07-09 21:42:10

标签: python

我已经设法几乎没有OOP,因为我一直在使用python而且我正在努力熟悉编写类等等。

如何将以下类分解为另一个函数。我想先将两个参数传递给类,先传递fname然后再调用一个名为display的方法来处理我要打印的所有xml内容。当我尝试这样做时,我最终得到了树的全局名称问题。

import sys
class Parser(object):

    def __init__(self, file_name, mylist):

        import xml.etree.ElementTree as etree
            self.file_name = file_name
            tree = etree.parse(self.file_name)
            for node in tree.getiterator():
                for element in mylist:
                    if element in node.tag:
                        print(node.tag)

list2 = ['KeyId','X509SerialNumber','CompositionPlaylistId']
fname = sys.argv[1]
myfileinstance =Parser(fname,list2)

1 个答案:

答案 0 :(得分:1)

只需创建一个新方法来执行您想要的方法(当然我有点猜测,因为您实际上没有向我们展示更像您想要的代码......)。您的__init__方法应该只包含创建对象所需的逻辑 - 通常这意味着分配实例变量等等。

import sys
import xml.etree.ElementTree as etree # All imports at the top of the file!

class Parser(object):
    def __init__(self, file_name):
        self.file_name = file_name

    def display(self, rename_this_variable):
        tree = etree.parse(self.file_name)
        for node in tree.getiterator():
            for element in rename_this_variable:
                if element in node.tag:
                    print(node.tag)

list2 = ['KeyId','X509SerialNumber','CompositionPlaylistId']
# Worth a mention: rename this to something that's actually meaningful!

fname = sys.argv[1]
instance = Parser(fname)
instance.display(list2)