123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
-
- def list_all_mro_mthds(klass,mthd_name):
- ret = []
- called = set([None])
- for cls_obj in klass.__mro__:
- mthd = getattr(cls_obj,mthd_name,None)
- if not mthd in called:
- called.add(mthd)
- ret.append(mthd)
- return ret
- # assumes all methods of interest will be callable in decendant class
- def class_info(klass):
- mthds = {}
- cnt=0
-
- # mro =
-
- for en in dir(klass):
- if (en[:2]=="__"):continue
- attr = getattr(klass,en,None)
-
- if (not callable(attr)):continue
- # p(en,type(attr))
- # p(en,type(attr))
- # p(attr)
- m2 = list_all_mro_mthds(klass,en)
- # if (len(m2)>1):
- if 1:
-
- p(len(m2),en)
- for m in m2:
- # p("\t",m)
- p(" ",m)
- cnt+=1
- # p(len(klass.__mro__))
- # p(len(set(klass.__mro__)))
- # p(klass.__mro__)
-
-
- p(cnt)
-
-
-
- run_now()
- # p("/")
- # class_info(Mixins.DevMixin)
- # class_info(Mixins.DevRlist)
- # p(class_info)
|