【发布时间】:2014-10-30 13:11:27
【问题描述】:
我正在尝试创建一个捆绑我所有包装器的类。我正在尝试创建可以在我制作的所有项目中使用的自定义 etree 方法。
当我尝试执行以下操作时,出现名称错误。
class ObjectWrapper(object):
from lxml import etree
@classmethod
def stringify(cls, root):
return etree.tostring(root, pretty_print=True)
@classmethod
def node_creator(cls, parent, child):
ch_node = etree.Element(child)
parent.append(ch_node)
print "Child Node Created"
return ch_node
考虑这个类的结构如下。
TopModule
|
|
|
|_
object_wrapper.py
|
|
|
|_
ObjectWrapper()
当我从 TopModule.object_wrapper 导入 ObjectWrapper 时,我收到一条错误提示
Name error: global name "etree" is not defined
如果我进行全局导入并将类方法变成静态方法,也会发生同样的情况。
有什么建议吗?
【问题讨论】:
-
不应将
from lxml import etree置于您的class或__init__之上? -
真快,用那个方法,在返回之前,试试
global etree。由于在类中声明了etree,但未限定在方法范围内,可能是范围问题 -
@Vizjerei 是的,我同意。但我不想进行全球进口。将 object_wrapper.py 视为具有包装器的类的集合。我正在尝试在特定类中进行导入。 (我可能做错了,我只是想知道这是否可能)
标签: python class methods import module