08.5 metaclass

# -*- coding: utf-8 -*- # @Time : 2021/8/1 18:48 # @Author : zy7y # @Gitee : https://gitee.com/zy7y # @File : metaclass.py # @Project : PythonBooks """ 類也是對象,type是創建類的類, type 也是object 的子類 """ # 動態創建類 type """ type(object_or_name, bases, dict) type(object) -> the object's type type(name, bases, dict) -> a new type # (copied from class doc) """ def say(self): """該方法 需要給實例,綁定到元類上""" print("say.") return 1 # 創建 User類, () 不繼承類, {} 屬性 或者方法 User = type("User", (), {"name": "小明", "say": say}) class Super(type): def __new__(cls, *args, **kwargs): return super().__new__(cls, *args, **kwargs) class User(metaclass=Super): """實例化過程中 尋找metaclass ,通過它去創建User類, 找不到時 就會調用type 創建類""" def __str__(self): return "User obj" if __name__ == '__main__': user = User() # print(user.name) # print(user.say()) print(user)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章