草庐IT

metaclass

全部标签

python的metaclass

python中的metaclass可谓熟悉而又陌生,自己开发时很少用,阅读源码时却经常遇到,那么到底什么是metaclass呢?何时使用metaclass呢?动态创建class的方法假设我们需要动态创建一个class,那么一般我们有这样几种方法通过一个函数动态创建class通过type动态创建class1.函数动态创建classdefcreate_class_by_name(name):ifname=='dog':classDog(object):passreturnDogelse:classCat(object):passreturnCatdy_class=create_class_by_n

python的metaclass

python中的metaclass可谓熟悉而又陌生,自己开发时很少用,阅读源码时却经常遇到,那么到底什么是metaclass呢?何时使用metaclass呢?动态创建class的方法假设我们需要动态创建一个class,那么一般我们有这样几种方法通过一个函数动态创建class通过type动态创建class1.函数动态创建classdefcreate_class_by_name(name):ifname=='dog':classDog(object):passreturnDogelse:classCat(object):passreturnCatdy_class=create_class_by_n

Swift 3 - 类名/类型查找

我的应用使用绘图类的数百个子类。(这些子类是从艺术文件自动生成的。)理想情况下,我想加载一些子类的名称,检查这些子类是否实际可用,如果是,则实例化它们。但是,似乎在纯Swift中缺少NSClassFromString风格的功能意味着我不得不提前向编译器声明我所有的类名。例如通过一个非常冗长乏味的switch语句来上课:funcdrawingObjectFromClassName(_className:String)->SomeDrawingProtocol?{switchclassName{case"foo":returnfoo()case"bar":returnbar()//etc.

ios - .self 在 Swift 中的结构类型之后

我对Metal示例中的一行代码感到困惑,其中内存指针绑定(bind)到一个类型。uniforms=UnsafeMutableRawPointer(uniformBuffer.contents()).bindMemory(to:Uniforms.self,capacity:1)我的困惑是Uniforms类型之后的.self。Uniforms是在Objective-C文件中定义的结构,如果调用中没有.self,代码将无法运行。为什么有必要? 最佳答案 .self返回相应类型的元类型实例。将其视为类型安全的类型标识符(例如,比使用字符串更

python - 如何在不显式导入的情况下使新装饰器在类中可用?

是否可以修改一个类,使某个方法装饰器可用,而不必显式导入它,也不必为其添加前缀(@something.some_decorator):classSomeClass:@some_decoratordefsome_method(self):pass我认为类装饰器不可能做到这一点,因为应用得太晚了。看起来更有希望的选项是使用元类,但我不确定如何,我的猜测是我必须将some_decorator引入到SomeClass的命名空间中。感谢@MartijnPieters指出staticmethod和classmethod是内置的。我原以为它们会成为type机器的一部分。明确地说,我没有任何明确的用例

python - 参数化类和元类之间有什么区别(请使用 Python 代码示例)?

你好StackOverflow贡献者,我现在是一名学习Python的新手程序员,我遇到了thissite这有助于解释面向对象的范例。我知道元类是类的类(比如元目录是目录的目录,等等),但我遇到了一些问题:元类和参数化类之间的实际区别是什么,根据网站的定义?如果可以,请提供Python代码示例以说明两者之间的差异。感谢您的帮助! 最佳答案 Python没有(或不需要)“参数化类”,因此很难在Python中提供它们的示例;-)。元类就是“类的类”:通常是type(只要在Py2中,你记得通过继承object使类成为新样式,或其他一些内置类

python - 具有集成查询集的子类 Django 模型

喜欢thisquestion,除了我希望能够拥有返回对象混合体的查询集:>>>Product.objects.all()[,,,...]我发现我不能只将Product.Meta.abstract设置为true或以其他方式将不同对象的查询集“或”在一起。很好,但是这些都是公共(public)类的子类,所以如果我将它们的父类(superclass)保留为非抽象类,我应该会很高兴,只要我能让它的管理器返回正确类的对象。django中的查询代码做它自己的事情,只是调用Product()。听起来很简单,除了当我重写Product.__new__时它会爆炸,我猜是因为模型中的__metaclass

python - 如何编写元类以防止在 __init__() 之后创建新属性?

目前,我在类的__init__()方法末尾覆盖类的__setattr__()方法以防止创建新属性-classPoint(object):def__init__(self):self.x=0self.y=0Point.__setattr__=self._setattrdef_setattr(self,name,value):ifnothasattr(self,name):raiseAttributeError("'"+name+"'notanattributeofPointobject.")else:super(Point,self).__setattr__(name,value)有没有

python - Cython 元类.pxd : How should I implement `__eq__()` ?

我正在尝试使用cython.pxd来扩充现有的python源代码,正如StefanBehnel在"UsingtheCythonCompilertowritefastPythoncode"的幻灯片32到35中所说明的那样.作为练习的一部分,我一直在使用元类中的__eq__()方法碰壁。我希望我可以选择一个更简单的案例来启动Cython,但我的生产代码并不那么简单。我编写了一个“最小的完整示例”来说明问题......请参阅问题底部的代码。短篇小说...如果我使用cdefinline__richcmp__(Japan_Car_ABCself,Japan_Car_ABCother,intop)

python - Django:调用元类基础时出错

这里是错误TypeError:Errorwhencallingthemetaclassbasesmetaclassconflict:themetaclassofaderivedclassmustbea(non-strict)subclassofthemetaclassesofallitsbases我的models.py中有问题的类classBusiness(models.Model,forms.Form):name=models.CharField(max_length=128)tel_no=models.CharField(max_length=11)address_ln1=mode