在元类中设置隐藏属性
在元类中对创建的类进行属性隐藏 通过控制对象的__dict__属性格式从而对属性进行隐藏。在外面访问属性需要访问隐藏属性格式。
class Mymeta(type):
def __init__(self,class_name,class_bases,class_dic):
#控制类Foo的创建
super(Mymeta,self).__init__(class_name,class_bases,class_dic)
def __call__(self, *args, **kwargs):
#控制Foo的调用过程,即Foo对象的产生过程
obj = self.__new__(self)
print(obj) # <__main__.Foo object at 0x0000019E54269518>
self.__init__(obj, *args, **kwargs)
print(self) # Foo
obj.__dict__={'_%s__%s' %(self.__name__,k):v for k,v in obj.__dict__.items()}
print(obj) # <__main__.Foo object at 0x0000019E54269518>
return obj
class Foo(object,metaclass=Mymeta): # Foo=Mymeta(...)
def __init__(self, name, age,sex):
print(self) # <__main__.Foo object at 0x0000019E54269518>
self.name=name
self.age=age
self.sex=sex
obj=Foo('egon',18,'male')
print(obj) # <__main__.Foo object at 0x0000019E54269518>
print(obj.__dict__)
越是困难的事越要立即去做,这样收益才会最大!!!
浙公网安备 33010602011771号