草庐IT

metaclass

全部标签

python - Python 元类与常规类继承有何不同?

这个问题在这里已经有了答案:WhataremetaclassesinPython?(24个回答)关闭9年前。这可能是一个开放式问题,但我刚刚学习Python中的元类,我不明白元类与仅从父类继承子类有何不同,例如classchild(parent):这难道不是与元类相同的目的吗?我想也许我不明白元类的目的。 最佳答案 不同的是,从类继承不影响类的创建方式,它只影响类的实例的创建方式。如果你这样做:classA(object):#stuffclassB(A):#stuff那么在创建B时,A没有任何机会“Hook”。A的方法可以在创建B的

python - Python 元类与常规类继承有何不同?

这个问题在这里已经有了答案:WhataremetaclassesinPython?(24个回答)关闭9年前。这可能是一个开放式问题,但我刚刚学习Python中的元类,我不明白元类与仅从父类继承子类有何不同,例如classchild(parent):这难道不是与元类相同的目的吗?我想也许我不明白元类的目的。 最佳答案 不同的是,从类继承不影响类的创建方式,它只影响类的实例的创建方式。如果你这样做:classA(object):#stuffclassB(A):#stuff那么在创建B时,A没有任何机会“Hook”。A的方法可以在创建B的

python - Python 的内置 __build_class__ 有什么作用?

在Python3.1中,builtins模块中有一个我不知道的新内置函数:__build_class__(...)__build_class__(func,name,*bases,metaclass=None,**kwds)->classInternalhelperfunctionusedbytheclassstatement.这个函数有什么作用?如果它是内部的,为什么它必须是内置的?type(name,bases,dict)函数有什么区别? 最佳答案 编译PEP3115元类GuidovanRossumsaid:ThePEPprop

python - Python 的内置 __build_class__ 有什么作用?

在Python3.1中,builtins模块中有一个我不知道的新内置函数:__build_class__(...)__build_class__(func,name,*bases,metaclass=None,**kwds)->classInternalhelperfunctionusedbytheclassstatement.这个函数有什么作用?如果它是内部的,为什么它必须是内置的?type(name,bases,dict)函数有什么区别? 最佳答案 编译PEP3115元类GuidovanRossumsaid:ThePEPprop

python - 使用元类的 __call__ 方法而不是 __new__?

在讨论元类时,thedocs状态:Youcanofcoursealsooverrideotherclassmethods(oraddnewmethods);forexampledefiningacustom__call__()methodinthemetaclassallowscustombehaviorwhentheclassiscalled,e.g.notalwayscreatinganewinstance.[编者注:这已从3.3的文档中删除。它在3.2中:Customizingclasscreation]我的问题是:假设我希望在调用类时具有自定义行为,例如缓存而不是创建新对象。我

python - 使用元类的 __call__ 方法而不是 __new__?

在讨论元类时,thedocs状态:Youcanofcoursealsooverrideotherclassmethods(oraddnewmethods);forexampledefiningacustom__call__()methodinthemetaclassallowscustombehaviorwhentheclassiscalled,e.g.notalwayscreatinganewinstance.[编者注:这已从3.3的文档中删除。它在3.2中:Customizingclasscreation]我的问题是:假设我希望在调用类时具有自定义行为,例如缓存而不是创建新对象。我

python - 了解 __init_subclass__

我终于升级了我的python版本,并且发现了添加的新功能。除其他外,我对新的__init_subclass__摸不着头脑。方法。来自文档:Thismethodiscalledwheneverthecontainingclassissubclassed.clsisthenthenewsubclass.Ifdefinedasanormalinstancemethod,thismethodisimplicitlyconvertedtoaclassmethod.所以我开始尝试使用它,按照文档中的示例进行操作:classPhilosopher:def__init_subclass__(cls,d

python - 了解 __init_subclass__

我终于升级了我的python版本,并且发现了添加的新功能。除其他外,我对新的__init_subclass__摸不着头脑。方法。来自文档:Thismethodiscalledwheneverthecontainingclassissubclassed.clsisthenthenewsubclass.Ifdefinedasanormalinstancemethod,thismethodisimplicitlyconvertedtoaclassmethod.所以我开始尝试使用它,按照文档中的示例进行操作:classPhilosopher:def__init_subclass__(cls,d

Python 元类与类装饰器

Python元类和类装饰器之间的主要区别是什么?有什么我可以用一个做而另一个不能做的事情吗? 最佳答案 装饰器要简单得多,也受到更多限制——因此,只要可以使用元类或类装饰器来实现所需的效果,就应该首选装饰器。任何你可以用类装饰器做的事情,你当然可以用一个自定义元类来做(只需应用“装饰器函数”的功能,即接受一个类对象并修改它的那个,在元类的__new__或__init__使类成为对象!-)。您可以在自定义元类中做很多事情,但在装饰器中却不能(当然,除非装饰器在内部生成并应用自定义元类,但那是作弊;-)...即使这样,在Python中也

Python 元类与类装饰器

Python元类和类装饰器之间的主要区别是什么?有什么我可以用一个做而另一个不能做的事情吗? 最佳答案 装饰器要简单得多,也受到更多限制——因此,只要可以使用元类或类装饰器来实现所需的效果,就应该首选装饰器。任何你可以用类装饰器做的事情,你当然可以用一个自定义元类来做(只需应用“装饰器函数”的功能,即接受一个类对象并修改它的那个,在元类的__new__或__init__使类成为对象!-)。您可以在自定义元类中做很多事情,但在装饰器中却不能(当然,除非装饰器在内部生成并应用自定义元类,但那是作弊;-)...即使这样,在Python中也