1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
#!/usr/local/bin/python3.6
# -*- coding: latin-1 -*-
from functools import wraps
import collections
class A ( object):
def __init__ ( self):
__doc__='--init classe A--'
print(__doc__)
self.GlobeVarA='varA'
#
class B ( object):
def __init__ (self):
__doc__='--init classe B--'
print(__doc__)
self.GlobeVarB='varB'
#
# Recuperation Arguments
def _func_1B(__wfunc_1):
@wraps(__wfunc_1)
def wrapper(cls):
__doc__='Recuperation argument '
print('step 1')
print (__doc__)
_Arg1="Data"
return __wfunc_1(cls,_Arg1)
return wrapper
#
@_func_1B
def func_2(cls,_Arg):
_Arg2='Tranform '+_Arg+' with use '+cls.GlobeVarB
_Control=A.C._func_3(cls,_Arg2)
print('Return func ='+str(_Control))
return _Control
#
class C ( object):
def __init__ (self):
__doc__='--init classe C--'
print(__doc__)
self.GlobeVarC='varC'
#
def _func_1C(__Wfunc_1):
@wraps(__Wfunc_1)
def wrapper(cls,_Arg):
__doc__='traitement argument '
print('step 2')
print (__doc__)
_Arg1=(_Arg,'test')
return __Wfunc_1(cls,_Arg1)
return wrapper
#
@_func_1C
def _func_3 (cls,_Arg):
__doc__='appel func Base '
print('step 3')
print (__doc__)
_VarOther=_Arg[0]
_FuncCmd='__'+_Arg[1]
_ClsListRoot=str(__class__).split('\'',2)
_ClsRoot=_ClsListRoot[1].lstrip('__main__.')
_ClsObj='_'+__class__.__name__
_ArgCmdType=_ClsObj+_FuncCmd
_ArgCmd=_ClsRoot+'.'+_ArgCmdType
print(' _ClsListRoot='+str(_ClsListRoot))
print(' _ClsRoot='+str(_ClsRoot))
print(' _ClsObj='+str(_ClsObj))
print(' _ArgCmdType='+str(_ArgCmdType))
print(' _ArgCmd='+str(_ArgCmd))
#ligne en erreur
#_KsState=getattr(cls,_ArgCmdType)(_VarOther)
#
_Kstate=getattr(A.C,_ArgCmdType)(_VarOther)
return _Kstate
#
def __test (_Arg):
__doc__='fonction Base Test'
print('step 4')
print(__doc__)
_Kstate=_Arg+' and Other Op : Ok'
return _Kstate
#
#Pour les tests
if (__name__=='__main__'):
print ('__main_execute__')
#
test=A.B()
result=test.func_2() |
Partager