我已经设法几乎没有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)
答案 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)