为了账号安全,请及时绑定邮箱和手机立即绑定

Python:在为 __init__subclass__() 提供参数的同时动态创建类

Python:在为 __init__subclass__() 提供参数的同时动态创建类

繁星coding 2023-06-06 16:29:25
如何动态创建我的类的子类并为其__init_subclass__()方法提供参数?示例类:class MyClass:    def __init_subclass__(cls, my_name):        print(f"Subclass created and my name is {my_name}")通常我会这样实现我的子类:class MySubclass(MyClass, my_name="Ellis"):    passmy_name但是动态创建使用元类的子类时如何传入MyClass?通常我可以使用,type()但它没有提供my_name.MyDynamicSubclass = type("MyDynamicSubclass", (MyClass,), {})
查看完整描述

1 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

的基本文档type没有提到它接受无限数量的仅限关键字的参数,您可以通过语句中的关键字提供这些参数class。唯一暗示的地方是在创建类对象部分的数据模型中:

通过执行类主体填充类命名空间后,通过调用创建类对象metaclass(name, bases, namespace, **kwds)(此处传递的附加关键字与传递给的关键字相同__prepare__)。

通常,您不会将此功能与type以下原因一起使用__init_subclass__

默认实现object.__init_subclass__不执行任何操作,但如果使用任何参数调用它会引发错误。

由于您已经覆盖了默认实现,因此您可以将动态类创建为

MyDynamicSubclass = type("MyDynamicSubclass", (MyClass,), {}, my_name="Ellis")


查看完整回答
反对 回复 2023-06-06
  • 1 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信