Python 元类属性和元类kwarg之间有什么区别
class属性_元类_和class关键字参数元类之间的区别是什么 考虑这个例子:Python 元类属性和元类kwarg之间有什么区别,python,python-3.x,Python,Python 3.x,class属性_元类_和class关键字参数元类之间的区别是什么 考虑这个例子: class Meta1(type): def __new__(cls, name, bases, attrs): attrs.update({'x': 100}) return super().__new__(cls, name, bases, attrs) class Foo(metaclass=Meta1): pass class Bar(object):
class Meta1(type):
def __new__(cls, name, bases, attrs):
attrs.update({'x': 100})
return super().__new__(cls, name, bases, attrs)
class Foo(metaclass=Meta1):
pass
class Bar(object):
__metaclass__ = Meta1
f = Foo()
b = Bar()
f.x
>> 100
b.x
>> AttributeError: 'Bar' object has no attribute 'x'
我原以为Foo和Bar实例在功能上是等价的,但显然它们不是。\uuuuu元类\uuuuu属性是用于声明元类的python2语法。元类=kwarg是它的python3语法
如果您需要一个代码库来支持python2和python3,您可以使用future,它具有。\uuuuu元类\uuuuu属性是用于声明元类的python2语法。元类=kwarg是它的python3语法
如果您需要一个代码库来支持python2和python3,您可以使用future,future已经有了。啊,我明白了-感谢您快速地解决了这个问题。我应该想到,就元类兼容性而言,>未来提供了什么?我只知道。@a_guest这是指第三方,不是stdlib uuu future uuu。啊,我明白了-谢谢你迅速澄清。我应该想到,就元类兼容性而言,>未来提供了什么?我只知道。@a_guest这指的是第三方,而不是stdlib uuu future uuu。