下面是我進口的ElementTree:的Python - 難度調用父方法(ElementTree的)
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
這裏是我班的一個片段:
class Foo(ET.ElementTree):
def __init__(self, *args):
if args[0] == "file":
# populate from xml file
self = load_xml(self, *args[1:])
elif args[0] == "user_input":
# populate from user_input
self = load_from_user_input(self, *args[1:])
else:
raise ValueError("Error initializing Foo: Invalid argument")
def save_xml(self, file_name):
self.write(file_name + FOO_EXTENSION, xml_declaration=True, encoding='utf-8', method='xml')
初始化和save_xml工作如預期。事情變得混亂是任何時候,我需要使用Foo對象的根的方法,如將一些東西附加到富的ElementTree根:
root = self.getroot()
root.append(something)
這會產生這樣的錯誤:
AttributeError: getroot
如何從Foo內正確調用getroot()?
爲什麼不self.getroot()工作,但self.write()呢?
從ElementTree 對象繼承的對象有問題嗎?
我渾然不覺地跑向面向對象的重要面向對象 概念障礙嗎?
'self = X'往往不是很好的形式...... – 2013-04-22 21:03:10
@Joran Beasley--你可能會說,我對Python很陌生,所以我很欣賞這種批評。你能擴展一下嗎?爲什麼它是不好的形式,什麼是最好的選擇? – busfullofbears 2013-04-22 22:05:23