1. 程式人生 > >元類編程-- metaclass

元類編程-- metaclass

cti -- 實例 IT class metaclass 類 對象 imp port

#類也是對象,type創建類的類
def create_class(name):
    if name == "user":
        class User:
            def __str__(self):
                return "user"
        return User
    elif name == "company":
        class Company:
            def __str__(self):
                return "company"
        return Company

#type動態創建類 # User = type("User", (), {}) #名稱,繼承(要繼承的base類),屬性或方法(但是要字典形式) def say(self): return "i am user" # return self.name class BaseClass(): def answer(self): return "i am baseclass" class MetaClass(type): #繼承type為元類 def __new__(cls, *args, **kwargs): return
super().__new__(cls, *args, **kwargs) from collections.abc import * #什麽是元類, 元類是創建類的類 對象<-class(對象)<-type class User(metaclass=MetaClass): def __init__(self, name): self.name = name def __str__(self): return "user" #python中類的實例化過程,會首先尋找metaclass,通過metaclass去創建user類 #type去創建類對象,實例
if __name__ == "__main__": # MyClass = create_class("user") # my_obj = MyClass() # print(type(my_obj)) # User = type("User", (BaseClass, ), {"name":"user", "say":say}) my_obj = User(name="bobby") print(my_obj)

元類編程-- metaclass