new-style-class

    5热度

    1回答

    这是一个老样式类: class OldStyle: pass 这是一种新式类: class NewStyle(object): pass 这也是一个新式类: class NewStyle2: __metaclass__ = type 有NewStyle和NewStyle2之间有什么不同? 我的印象是,从object继承的唯一影响实际上是定义了type元类,

    5热度

    2回答

    在Python 2.x中,所有新式类都从object隐式或显式继承。然后看看这个: >>> class M(type): ... pass ... >>> class A: ... __metaclass__ = M ... >>> class B: ... pass ... >>> a = A() >>> b = B() >>> type(A) <class '_

    5热度

    2回答

    我正在学习Python,并且我试图更好地理解描述符。当我看到这条巨蟒的在线图书:http://www.cafepy.com/article/python_attributes_and_methods/ch01s05.html,它说: 如果attrname是对象名特殊(即Python的提供)属性,其返回。 我不明白Python提供的意思。有人可以给我一个这样的Python提供的属性的例子,它会优先于

    0热度

    1回答

    根据Python的2.7.12文档: 如果__setattr__()想分配给一个实例属性,它应该 不能简单地执行self.name = value - 这会导致递归调用 本身。相反,它应该将值插入实例属性的词典 中,例如self.__dict__[name] = value。 对于 新样式类,而不是访问实例字典,它应该调用具有相同名称的基类方法,例如, object.__setattr__(sel

    1热度

    1回答

    我正在挑选一些C++ Python包装器代码,它允许消费者从C++构造自定义旧式和新式Python类。 原始代码来自PyCXX,新旧风格类别here和here。然而,我已经对代码进行了大量改写,在这个问题中,我会引用自己的代码,因为它使我能够以最清晰的方式呈现我所能做到的。我想只有极少数人能够理解原始代码,而不需要经过几天的审查......对我来说,这花了数周时间,但我仍然不清楚。 旧风格简单地从

    1热度

    2回答

    什么是简单的效用函数,以旧式的和新的风格的蟒蛇类或对象区分? 有以下几种正确/完整: isNewStyle1 = lambda o: isinstance(hasattr(o, '__class__') and o.__class__ or o, type) isNewStyle2 = lambda o: hasattr(o, '__class__') and type(o) == o.__cl

    2热度

    2回答

    考虑经典类和新样式类之间的以下差异。 class A(): data = 'abcd' def __getattr__(self, name): return getattr(self.data, name) class B(object): data = 'abcd' def __getattr__(self, name)

    20热度

    2回答

    可能重复: Old style and new style classes in Python 什么是新的风格和老式类事务在Python 2.7的现状如何?我经常不使用Python,但我依稀记得这个问题。文档似乎没有提到这个问题:The Python Tutorial: Classes。我仍然需要担心这个吗?在一般情况下,我应该宣布我的类如下: class MyClass: pass

    2热度

    1回答

    旧式类 class Person(): _names_cache = {} def __init__(self,name): self.name = name def __new__(cls,name): return cls._names_cache.setdefault(name,object.__new__(cls,name)) ah

    1热度

    1回答

    由于Python努力争取有一个正确的方式,我想知道property.getter的目的是什么。在这个例子中,WhyMe定义了一个getter,但其他的不是,所以我想知道property.getter的要点是否只是使用属性。 class WhyMe(object): def __init__(self): self._val = 44 @property