Python,Django,如何在类内部使用导入,无法解决这个问题
我想在一个类里面使用导入的模块,然后让另一个类继承这个类,这样我就不用在每个文件里手动定义导入的模块了。我试着这样做,但没有成功,任何建议都很欢迎:
class Djangoimports ():
def __init__(self):
from django.template import Context
print Context
class Init1 (Djangoimports):
def __init__(self):
Djangoimports.__init__(self)
self.c = Context(self.constructor_dict) # just example of trying to use the imported "Context"
>>>>> global name 'Context' is not defined
我尝试过用“self”的不同方式,但不知道怎么把它和导入的模块一起用,因为这和我通常用“self”的类属性或方法不一样。
2 个回答
1
在Python中,导入(import)只是把东西加到当前的命名空间里。命名空间就像一个容器,里面存放着你可以使用的变量和函数。当你从一个函数返回时,这个容器里的内容就会消失,但你可以通过把它添加到'self'来保留这个指针。
你可以这样做:
class Djangoimports ():
def __init__(self):
from django.template import Context
self.Context = Context
class Init1 (Djangoimports):
def __init__(self):
Djangoimports.__init__(self)
self.c = self.Context(self.constructor_dict)
5
这个方法对我来说很好用。
不过你这样做会更好:
>>> class Test(object):
... from functools import partial
...
>>> Test().partial
<type 'functools.partial'>
注意,如果你按照你的方式做,你需要在每个实例中单独初始化它们,并且要像这样赋值给self:
def Test(object):
def __init__(self):
from functools import partial
self.partial = partial
无论哪种方式,现在你都可以在那个类或它的子类中的其他方法里通过 self.bar
来访问 bar
。