#!/usr/bin/env python
# -*- coding: utf-8 -*-
import functools
class Abe( object ) :
def __init__ ( self , name, age, gender) :
self .name = name
self .age = age
self .gender = gender
def foo( func) :
@ functools.wraps ( func)
def wrapper( *args, **kwargs) :
for k, v in self .__dict__ .items ( ) :
if k not in ( "name" , "gender" ) :
yield { k, v}
next( wrapper( ) )
@ foo
def bar( self ) :
pass
def main( ) :
a = Abe( "Abe" , 60 , "M" )
print ( a.foo ( ) )
if __name__ == '__main__' :
main( )
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgLSotIGNvZGluZzogdXRmLTggLSotCgppbXBvcnQgZnVuY3Rvb2xzCgpjbGFzcyBBYmUob2JqZWN0KToKCglkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgYWdlLCBnZW5kZXIpOgoJCXNlbGYubmFtZSA9IG5hbWUKCQlzZWxmLmFnZSA9IGFnZQoJCXNlbGYuZ2VuZGVyID0gZ2VuZGVyCgoJZGVmIGZvbyhmdW5jKToKCQlAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCgkJZGVmIHdyYXBwZXIoKmFyZ3MsKiprd2FyZ3MpOgoJCQlmb3IgaywgdiBpbiBzZWxmLl9fZGljdF9fLml0ZW1zKCk6CgkJCQlpZiBrIG5vdCBpbiAoIm5hbWUiLCAiZ2VuZGVyIik6CgkJCQkJeWllbGQge2ssIHZ9CgkJbmV4dCh3cmFwcGVyKCkpCgoJQGZvbwoJZGVmIGJhcihzZWxmKToKCQlwYXNzCgoKZGVmIG1haW4oKToKCWEgPSBBYmUoIkFiZSIsIDYwLCAiTSIpCglwcmludChhLmZvbygpKQoJCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgoJbWFpbigp
stdout
stderr
Traceback (most recent call last):
File "<builtin>/app_main.py", line 75, in run_toplevel
File "prog.py", line 6, in <module>
class Abe(object):
File "prog.py", line 21, in Abe
@foo
File "prog.py", line 19, in foo
next(wrapper())
File "prog.py", line 16, in wrapper
for k, v in self.__dict__.items():
NameError: global name 'self' is not defined