Blame tests/run/closure_class_T596.pyx
|
Packit |
562c7a |
# mode: run
|
|
Packit |
562c7a |
# tag: closures
|
|
Packit |
562c7a |
# ticket: 596
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
def simple(a, b):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> kls = simple(1, 2)
|
|
Packit |
562c7a |
>>> kls().result()
|
|
Packit |
562c7a |
3
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
class Foo:
|
|
Packit |
562c7a |
def result(self):
|
|
Packit |
562c7a |
return a + b
|
|
Packit |
562c7a |
return Foo
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
def nested_classes(a, b):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> kls = nested_classes(1, 2)
|
|
Packit |
562c7a |
>>> kls().result(-3)
|
|
Packit |
562c7a |
0
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
class Foo:
|
|
Packit |
562c7a |
class Bar:
|
|
Packit |
562c7a |
def result(self, c):
|
|
Packit |
562c7a |
return a + b + c
|
|
Packit |
562c7a |
return Foo.Bar
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
def staff(a, b):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> kls = staff(1, 2)
|
|
Packit |
562c7a |
>>> kls.static()
|
|
Packit |
562c7a |
(1, 2)
|
|
Packit |
562c7a |
>>> kls.klass()
|
|
Packit |
562c7a |
('Foo', 1, 2)
|
|
Packit |
562c7a |
>>> obj = kls()
|
|
Packit |
562c7a |
>>> obj.member()
|
|
Packit |
562c7a |
(1, 2)
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
class Foo:
|
|
Packit |
562c7a |
def member(self):
|
|
Packit |
562c7a |
return a, b
|
|
Packit |
562c7a |
@staticmethod
|
|
Packit |
562c7a |
def static():
|
|
Packit |
562c7a |
return a, b
|
|
Packit |
562c7a |
@classmethod
|
|
Packit |
562c7a |
def klass(cls):
|
|
Packit |
562c7a |
return cls.__name__, a, b
|
|
Packit |
562c7a |
return Foo
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
def nested2(a):
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
>>> obj = nested2(1)
|
|
Packit |
562c7a |
>>> f = obj.run(2)
|
|
Packit |
562c7a |
>>> f()
|
|
Packit |
562c7a |
3
|
|
Packit |
562c7a |
"""
|
|
Packit |
562c7a |
class Foo:
|
|
Packit |
562c7a |
def run(self, b):
|
|
Packit |
562c7a |
def calc():
|
|
Packit |
562c7a |
return a + b
|
|
Packit |
562c7a |
return calc
|
|
Packit |
562c7a |
return Foo()
|