# -*- 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)
08.5 metaclass
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.