__metaclass__在Python 3中

__metaclass__在Python 3中,第1张

__metaclass__在Python 3中

Python
3更改了您指定元类的方式,

__metaclass__
不再检查。

使用

metaclass=...
在类 签名

class Table(object, metaclass=metaTable):

演示

>>> class metaTable(type):...     def __getattr__(cls, key):...         temp = key.split("__")...         name = temp[0]...         alias = None...         if len(temp) > 1:...  alias = temp[1]...         return cls(name, alias)...>>> class Table(object, metaclass=metaTable):...     def __init__(self, name, alias=None):...         self._name = name...         self._alias = alias...>>> d = Table>>> d.student__s<__main__.Table object at 0x10d7b56a0>

如果需要在代码库中同时提供对Python
2和3的支持,则可以使用

six.with_metaclass()
基类生成器
@six.add_metaclass()
类装饰器来指定元类。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5623447.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存