new-style-class相关内容
..
所有的 Python 内置函数都是 object 的子类,我也遇到过很多用户定义的类.为什么?object 类的目的是什么?这只是一个空类,对吗? 解决方案 简而言之,它释放了魔法小马. 总而言之,Python 2.2 及更早版本使用“旧式类".它们是类的特定实现,并且有一些限制(例如,您不能对内置类型进行子类化).解决这个问题的方法是创建一种新的类样式.但是,这样做会涉及一些向后不
..
Python 中的旧式和新式类有什么区别?我什么时候应该使用其中一种? 解决方案 来自 新式和经典类: 在 Python 2.1 之前,旧式类是用户唯一可用的风格. (旧式)类的概念与类型的概念无关:如果 x 是旧式类的实例,则 x.__class__指定x的类,但type(x)总是. 这反映了所有旧式实例,独立于他们的类是用单一的内置类型实现的,称为实例. 在 P
..
代码: 导入类型C类(对象):经过c = C()打印(isinstance(c,types.InstanceType)) 输出: 假 检查对象是否是新样式类的用户定义类的实例的正确方法是什么? 更新: 我想进一步强调是否检查对象类型是否用户定义.根据文档: types.InstanceType 用户定义类的实例类型. UPD2: 好吧 - 不是“正确"的方法
..
type(obj) 和 obj.__class__ 有什么区别?有没有可能 type(obj) is not obj.__class__? 我想编写一个对提供的对象通用的函数,使用与另一个参数相同类型的默认值 1.下面的#1 或#2 哪个变体会做正确的事情? def f(a, b=None):如果 b 是 None:b = type(a)(1) # #1b = a.__class__(1)
..
因此,我正在使用Python 2.6中的装饰器,但在使它们工作时遇到了一些麻烦。这是我的课程文件: class testDec: @property def x( self): print'调用getter' return self._x @ x.setter def x(self,value): print'称为二传手' self._x =值
..
可能重复: Python中的旧样式和新样式类 Python 2.7中新样式和旧样式类的当前状态是什么? 我不经常使用Python,但是我隐约记得这个问题。该文档似乎根本没有提到这个问题: Python教程:类。我还需要为此担心吗?通常,我应该像下面这样声明我的课程吗? class MyClass: 通过 还是? 类MyClass(对象): 通过
..
所有Python内置都是object的子类,我也遇到了许多用户定义的类.为什么?类object的目的是什么?这只是一个空的课,对吧? 解决方案 简而言之,它设置了免费的魔法小马. 长期以来,Python 2.2和更早版本使用“旧样式类".它们是类的特定实现,并且有一些限制(例如,您不能对内置类型进行子类化).解决此问题的方法是创建一种新的类样式.但是,这样做将涉及一些向后不兼容的更改
..
我几乎已经完成了对C ++ Python包装器(PyCXX)的重写. 原始版本允许使用新旧样式扩展类,但也可以从新样式类派生一个扩展类: import test // ok a = test.new_style_class(); // also ok class Derived( test.new_style_class() ): def __init__( self ):
..
一组定义为的类: class A(): @staticmethod def call(): print('a') class C(type): def __repr__(self): return 'somename' class B(A): __metaclass__ = C @staticmethod
..
可能重复: Super可以处理多重继承吗? Python继承?我有一个类结构(如下),并且希望子类调用两个父级的__init__.这有可能以“超级"方式做到吗?还是只是一个糟糕的主意? class Parent1(object): def __init__(self): self.var1 = 1 class Parent2(object): def
..
Python 2.2的Changelog(引入了新式类)对__new__函数说了以下内容: __new__是静态方法,不是类方法.我最初以为它必须是一个类方法,这就是为什么我添加了classmethod原语的原因.不幸的是,在使用类方法的情况下,向上调用在这种情况下无法正常工作,因此我必须使其成为一个以显式类作为第一个参数的静态方法. 但是,我无法想到为什么类方法不能用于此目的,并且看
..
我可以强制父类调用派生类的函数版本吗? class Base(object): attr1 ='' attr2 ='' def虚拟(自我): pass#在父类中没有做任何事情 def func(self): print“%s,%s”%(self.attr1,self.attr2) self.virtual() 以及从中派生的类 class派生
..
我有以下Python 2.7代码: class Frame: def __init __(self,image): self.image = image class Eye(Frame): def __init __(self,image): super(Eye,self).__ init __() self.some_other_defined_stuff()
..
为什么会发生这种情况? class IsInstanceScrewer(object): def __init __(self,value) self.value = value def __getattribute __(self,name): 如果('value',)中的名称: return object .__ getattribute __(self, name)
..
可能重复: Python 2.7中的新式和旧式类的当前状态是什么?我不经常使用Python,但我模糊地记住了这个问题。文档似乎没有提到这个问题: Python教程:类。我还需要担心这个吗?一般来说,我应该声明我的类如下: class MyClass: pass 或? class MyClass ): pass 解决方案 “。这些是新式
..
Python中的旧样式和新样式类有什么区别?现在是否有理由使用旧式类? 解决方案 从 http://docs.python.org/2/reference/datamodel.html#new- style-and-classic-classes : 对于Python 2.1,旧样式类是唯一可用于用户。 (旧式)类的概念与类型的概念无关:如果 x 是旧式类的实例,则 x .__ cl
..
我选择了一些C ++ Python包装器代码,允许消费者从C ++中构造自定义旧样式和新样式的Python类。 原始代码来自 PyCXX ,包含旧样式类和新样式类此处和这里。我已经重写了代码实质上,在这个问题,我将引用我自己的代码,因为它允许我以最清晰的方式呈现我的情况。我认为很少有人能够理解原来的代码,没有几天的审查...对我来说,它花了几个星期,我还不清楚。 旧样式仅来源于PyOb
..