有一个来自我想子类我自己的目的第三方系统的一类,但它是一个函数中定义的,就像这样:是否可以导入在函数中定义的类?
def foo():
class Bar():
return Bar
如果我尝试只是导入from x import bar
,我得到ImportError: cannot import name 'Bar'
。是否有可能(或明智)导入Bar?也许最初的编码器专门把这个类放在函数里,以防止别人直接使用它?
我试图让这个类是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
你需要导入函数'foo',然后调用'c = foo()'来获得类'c'。有没有任何理由不这样做,你会试图做什么? – 2014-11-24 21:27:48
没有一个“Bar”类。相反,每次调用'foo()'时,都会创建一个名为'Bar'的*新类,并返回对其的引用。 – 2014-11-24 21:29:27