# coding:utf-8 import traceback class A(object): __static_field = ‘A_private static field‘ public_static_field = ‘A_public_static_field‘ start_urls = "A_class_start_urls" _one_line = "A_one_line" def __init__(self): (filename, line_number, function_name, text) = traceback.extract_stack()[-2] self.name = text[:text.find(‘=‘)].strip() self.start_urls = "object_start_urls" if not hasattr(self, "_one_line"): # 类属性中有,也算类实例有 self._one_line = ‘123‘ def __str__(self): return self.name def A_comm_func(self): return "A_comm_func" @classmethod def A_classmethod(cls): return "A_classmethod" @staticmethod def A_staticmethod(): return "A_staticmethod" def repeat(self): return "A_repeat" def ree(self): return self.__re() def __re(self): return "A__re" class B(A): B_public_field = "B_public_field" __B_pri_field = ‘B_pri_field‘ _B_one_line = ‘B_one_line‘ public_static_field = "B_public_static_field" _one_line = "B_one_line" def repeat(self): return "B_repeat" def B_comm_func(self): return "B_comm_func" @classmethod def B_classmethod(cls): return "B_classmethod" @staticmethod def B_staticmethod(): return ‘B_staticmethod‘ a = A() b = B() print "--------------A.dict-----------" print A.__dict__ print "--------------B.dict-----------" print B.__dict__ print "------------ a.__dict__ -----------" print a.__dict__ print "--------- b.dict -----------" print b.__dict__ # print b.A_classmethod() print B.A_classmethod() print A._one_line print a._one_line print b._one_line # 先从自己__dict__找,在去类找,再到类的父类找 print B._one_line # 先从自己找,再去父类找 b._one_line = ‘luanqibazao‘ print b._one_line
时间: 2024-09-29 17:18:22