分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

元类编程-- metaclass

发布时间:2023-09-06 01:50责任编辑:苏小强关键词:classmeta
#类也是对象,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.nameclass 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(对象)<-typeclass 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

原文地址:https://www.cnblogs.com/Erick-L/p/8883614.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved