对象已在蟒蛇
“在Python每一件事情都是一个对象”对象已在蟒蛇
所以,应该所有对象必须有属性和方法既没有属性也没有方法?
我读下面statemts在教程网站,你可以给在具有既没有属性也没有方法蟒蛇例如预先定义的对象?
有些对象既没有属性也没有方法
一切都在Python确实是一种对象,这是事实。即使是班级本身也被认为是对象,他们确实是内建类type
的产物,这也不足为奇。但在大多数情况下,对象几乎肯定会继承属性,包括方法或数据。
因此,所有的对象都应该有属性和方法吗?
不一定所有对象都有自己的属性。例如,一个对象可以从它的类和它的类的超类继承这个属性,但是这个属性或方法不一定存在于这个实例的名字空间字典中。事实上,情况的命名空间可以是空如下所示:
class Foo:
pass
a = A()
print(a.__dict__)
a
这里没有任何属性,除了那些从它的类继承的,所以如果您通过内置的属性,检查其命名空间__dict__
,你会发现命名空间是一个空的字典。但是你可能会想知道a.__dict__
是否属于a
?区分级别属性 - 从类或其超类继承的属性和实例属性 - 属于该实例且通常位于其名称空间__dict__
中的属性。
你可以给一个既没有属性也没有方法的预定义对象的例子吗?
如果你的意思是预定义的对象,一个内置对象,我无法想象这样的场景。同样,即使对象本身没有属性,如果在大多数情况下有超类,那么就会有从它的类或类的超类继承的属性。也许我在这里猜测,本教程要求您创建不为其对象分配属性的类,就像我上面包含的代码一样。
这已经回答你的问题好:Is everything an object in python like ruby?
有模仿,没有属性的一个Python对象hackish的方式。
class NoAttr(object):
def __getattribute__(self, attr):
raise AttributeError("no attribute: %s" % attr)
def __setattr__(self, attr, value):
raise AttributeError("can't set attribute: %s" % attr)
def __delattr__(self, attr):
raise AttributeError("no attribute: %s" % attr)
a = NoAttr()
这个实例a
,对于所有意图和目的,在纯Python,表现如同没有属性(你可以尝试在它hasattr
)的对象。
在C扩展中可能有一种低级别的方法,通过在C中实现一种类型,从病理上阻止Python的对象实现工作。无论如何,这里的保证金太小,不适合写一个。
没有属性的预定义对象将会破坏预定义它的目的。
大概你的意思是http://www.diveintopython.net/getting_to_know_python/everything_is_an_object.html,所以你有没有读过第三章承诺的后续行动? – jonrsharpe
可能重复[是否所有的东西都是python中的对象,像ruby?](http://stackoverflow.com/questions/865911/is-everything-an-object-in-python-like-ruby) – direprobs