0

自从我一直在使用 python 并且我试图熟悉编写类等等以来,我几乎没有做任何 OOP。

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

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)
4

1 回答 1

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)
于 2013-07-09T21:47:08.460 回答