Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 元类属性和元类kwarg之间有什么区别_Python_Python 3.x - Fatal编程技术网

Python 元类属性和元类kwarg之间有什么区别

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属性_元类_和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):
    __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。