有一个来自第三方系统的课程,我想按照自己的目的进行分类,但它是在一个函数中定义的,如下所示:
def foo():
class Bar():
return Bar
如果我尝试仅使用from x import bar
导入它,我会获得ImportError: cannot import name 'Bar'
。导入Bar是否可能(或明智)?也许原始编码器专门将该类放在函数内部以防止其他人直接使用它?
I类尝试获取的是CookieSession,在BaseCookieSessionFactory中定义,可在此处找到: http://docs.pylonsproject.org/projects/pyramid/en/master/_modules/pyramid/session.html
它已经完成了我想要的90%,从头开始实现我自己似乎是一种浪费,因为我只是复制粘贴大部分代码。
修改 根据Chepner的回答,我通过建立自己的工厂功能对其进行了分类:
from pyramid.session import SignedCookieSessionFactory
def MySessionFactory(secret, [other args here...]):
@implementer(ISession)
class MySession(SignedCookieSessionFactory(secret)):
...
return MySession
答案 0 :(得分:4)
您无法导入它,因为在foo
实际上被称为之前它不存在。但是,foo
似乎只是定义了函数并返回对它的引用。在这种情况下,你只需要像
from otherfile import foo
Bar = foo()
x = Bar() # create an instance of Bar