
在Python3中,可以通过使用PEP3115允许您在构造类时覆盖元类中的dict类型(例如,使用跟踪插入顺序的OrderedDict)。这是此方法的实现:
class Orderedmeta(type): @classmethod def __prepare__(metacls, name, bases): return OrderedDict() def __new__(cls, name, bases, clsdict): c = type.__new__(cls, name, bases, clsdict) c._orderedKeys = clsdict.keys() return cclass Person(metaclass=Orderedmeta): name = None date_of_birth = None nationality = None gender = None address = None comment = Nonefor member in Person._orderedKeys: if not getattr(Person, member): print(member)
在Python2中,这要棘手得多。这可以通过相当棘手的事情来实现,例如对源进行自省,并根据AST来确定定义顺序,但这可能比它的价值要麻烦得多。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)