object() 有什么用?
What is object() good for?
怎么可能
class EmptyClass:
def __init__(self):
pass
e = EmptyClass()
e.a = 123
有效并且:
o = object()
o.a = 123
不 (AttributeError: 'object' object has no attribute 'a'
) 而
print isinstance(e, object)
>>> True
?
当你不能像这样使用它时,object()
有什么用?
您不能向 object
的实例添加属性,因为 object
没有 __dict__
attribute (which would store the attributes). From the docs:
class object
Return a new featureless object. object
is a base for all classes. It has the methods that are common to all instances of Python classes.
This function does not accept any arguments.
Note:
object
does not have a __dict__
, so you can’t assign arbitrary attributes to an instance of the object
class.
而 object
确实有其用途:
如上所述,它作为 Python 中所有对象的基础 class。你看到和使用的一切最终都依赖于object
.
您可以使用 object
来创建 sentinel values,它们是独一无二的。使用 is
和 is not
测试它们只会 return True
当给出一个确切的 object
实例时。
在Python2.x中,你可以(应该)继承object
创建一个new-style class。新式 classes 具有增强的功能和更好的支持。请注意,所有 classes 在 Python 3.x.
中自动为新样式
怎么可能
class EmptyClass:
def __init__(self):
pass
e = EmptyClass()
e.a = 123
有效并且:
o = object()
o.a = 123
不 (AttributeError: 'object' object has no attribute 'a'
) 而
print isinstance(e, object)
>>> True
?
当你不能像这样使用它时,object()
有什么用?
您不能向 object
的实例添加属性,因为 object
没有 __dict__
attribute (which would store the attributes). From the docs:
class object
Return a new featureless object.
object
is a base for all classes. It has the methods that are common to all instances of Python classes. This function does not accept any arguments.Note:
object
does not have a__dict__
, so you can’t assign arbitrary attributes to an instance of theobject
class.
而 object
确实有其用途:
如上所述,它作为 Python 中所有对象的基础 class。你看到和使用的一切最终都依赖于
object
.您可以使用
object
来创建 sentinel values,它们是独一无二的。使用is
和is not
测试它们只会 returnTrue
当给出一个确切的object
实例时。在Python2.x中,你可以(应该)继承
object
创建一个new-style class。新式 classes 具有增强的功能和更好的支持。请注意,所有 classes 在 Python 3.x. 中自动为新样式