class TestClass(object):
aa = lambda x: 35
def __init__(self):
self.k = self.aa()
o = TestClass()
print o.k
这给了我35,我理解为什么。
但是这个:
class TestClass(object):
@classmethod
aa = lambda x: 35
print type(aa)
def __init__(self):
self.k = TestClass.aa()
o = TestClass()
print o.k
这给了我
File "test1.py", line 3
aa = lambda x: 35
^
SyntaxError: invalid syntax
为什么会这样?
答案 0 :(得分:6)
装饰器在def
和class
语句中仅在语法上有效。但是装饰器语法只是用装饰函数(或类)作为参数调用装饰器的简写,因此你可以用以下方法实现相同的结果:
class TestClass(object):
aa = classmethod(lambda x: 35)
# etc.
答案 1 :(得分:1)
你不能在lambda上使用装饰器。您可以用
替换它from django.conf.urls import include, url
from django.contrib import admin
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
url(r'^admin/', admin.site.urls),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)