我编写了一个视图类,它有多个@ view_config,并为单个路由设置了谓词.然后我有一个子类来覆盖一些子函数,这会影响视图的制作方式.下面是类似的,但使用简化的代码.
访问view_a路线时,一切正常.访问view_b路径时,显示"404 Not Founds找不到资源".
似乎@view_configs不是'继承'并且链接到新的@view_default.有没有一种简单的方法来解决这个问题,还是我必须切换到手动操作config.add_view()?
@view_defaults(route_name='view_a', renderer='templates/views.mak')
class View_A(object):
def message(self):
return 'This is view a'
@view_config(request_method='GET')
def get(self):
return {'message': self.message()}
@view_defaults(route_name='view_b')
class View_B(View_A):
def message(self):
return 'This is view b'
Run Code Online (Sandbox Code Playgroud) 我想要一个符合以下内容的课程
Foo(object):
@property
@asyncio.coroutine
def bar(self):
# This will need to run some blocking code via loop.run_in_executor()
return 'bar'
Run Code Online (Sandbox Code Playgroud)
然后我想访问这些属性而无需yield from
# In a loop...
foo = Foo()
foo.bar #This will return a generator object, but I want it to return 'bar'.
yield from foo.bar #This will return 'bar', but I don't want to do the yield from.
Run Code Online (Sandbox Code Playgroud)
这样的事可能吗?
我经常看到类似于以下代码的代码(类似于aiohttp文档中的示例).
@asyncio.coroutine
def init(loop):
srv = yield from loop.create_server(web.Application().make_handler(), '0.0.0.0', 8080)
return srv
Run Code Online (Sandbox Code Playgroud)
在下面的1行中有没有任何优点/缺点,假设你不想srv在获取它和返回之间对对象做任何事情?
@asyncio.coroutine
def init(loop):
return (yield from loop.create_server(web.Application().make_handler(), '0.0.0.0', 8080))
Run Code Online (Sandbox Code Playgroud)