def Items(cls): """non-class attributes ordered by alphabetical order. :: >>> class MyClass(Constant): ... a = 1 # non-class attributre ... b = 2 # non-class attributre ... ... class C(Constant): ... pass ... ... class D(Constant): ... pass >>> MyClass.Items() [("a", 1), ("b", 2)] .. versionadded:: 0.0.5 """ l = list() for attr, value in get_all_attributes(cls): # if it's not a class(Constant) if not inspect.isclass(value): l.append((attr, value)) return list(sorted(l, key=lambda x: x[0]))
def items(self): """non-class attributes ordered by alphabetical order. :: >>> class MyClass(Constant): ... a = 1 # non-class attributre ... b = 2 # non-class attributre ... ... class C(Constant): ... pass ... ... class D(Constant): ... pass >>> my_class = MyClass() >>> my_class.items() [("a", 1), ("b", 2)] .. versionchanged:: 0.0.5 """ l = list() # 为什么这里是 get_all_attributes(self.__class__) 而不是 # get_all_attributes(self) ? 因为有些实例不支持 # get_all_attributes(instance) 方法, 会报错。 # 所以我们从类里得到所有的属性信息, 然后获得这些属性在实例中 # 对应的值。 for attr, value in get_all_attributes(self.__class__): value = getattr(self, attr) # if it is not a instance of class(Constant) if not isinstance(value, Constant): l.append((attr, value)) return list(sorted(l, key=lambda x: x[0]))
def items(self): """non-class attributes ordered by alphabetical order. .. versionchanged:: 0.0.5 """ l = list() # 为什么这里是 get_all_attributes(self.__class__) 而不是 # get_all_attributes(self) ? 因为有些实例不支持 # get_all_attributes(instance) 方法, 会报错。 # 所以我们从类里得到所有的属性信息, 然后获得这些属性在实例中 # 对应的值。 for attr, value in get_all_attributes(self.__class__): value = getattr(self, attr) # if it is not a instance of class(Constant) if not isinstance(value, Constant): l.append((attr, value)) return l
def Subclasses(cls, sort_by=None, reverse=False): """Get all nested Constant class and it's name pair. :param sort_by: the attribute name used for sorting. :param reverse: if True, return in descend order. :returns: [(attr, value),...] pairs. :: >>> class MyClass(Constant): ... a = 1 # non-class attributre ... b = 2 # non-class attributre ... ... class C(Constant): ... pass ... ... class D(Constant): ... pass >>> MyClass.Subclasses() [("C", MyClass.C), ("D", MyClass.D)] .. versionadded:: 0.0.3 """ l = list() for attr, value in get_all_attributes(cls): try: if issubclass(value, Constant): l.append((attr, value)) except: pass if sort_by is None: sort_by = "__creation_index__" l = list( sorted(l, key=lambda x: getattr(x[1], sort_by), reverse=reverse)) return l
def Items(cls): """non-class attributes ordered by alphabetical order. :: class MyClass(Constant): a = 1 # non-class attributre b = 2 # non-class attributre class C: pass class D: pass .. versionadded:: 0.0.5 """ l = list() for attr, value in get_all_attributes(cls): # if it's not a class(Constant) if not inspect.isclass(value): l.append((attr, value)) return l