首页 > 试题广场 >

分析以下使用元类(Metaclass)动态修改类属性的代码,

[单选题]
分析以下使用元类(Metaclass)动态修改类属性的代码,并预测其最终输出:
class AttrModifierMeta(type):
    def __new__(mcs, name, bases, attrs):
        print("Meta.__new__ executing")
        attrs['X'] = 100
        return super().__new__(mcs, name, bases, attrs)
    def __init__(cls, name, bases, attrs):
        print("Meta.__init__ executing")
        cls.X += attrs.get('Y', 0)
        super().__init__(name, bases, attrs)
class MyData(metaclass=AttrModifierMeta):
    X = 10
    Y = 5
print(MyData.X)
  • Meta.__new__ executing, Meta.__init__ executing, 105
  • Meta.__new__ executing, Meta.__init__ executing, 15
  • Meta.__init__ executing, Meta.__new__ executing, 105
  • Meta.__new__ executing, Meta.__init__ executing, 100
先创建类,再执行元类实例准备工作、创建元类实例、执行元类初始化。
发表于 今天 09:24:52 回复(0)