对于“属性”和“属性”之间的区别,我通常感到困惑,并且找不到很好的资源来简洁地详细说明这些区别。
属性是一种特殊的属性。基本上,当Python遇到以下代码时:
spam = SomeObject() print(spam.eggs)
它查找eggs中spam,然后检查eggs,看它是否有一个__get__,__set__或__delete__方法- 如果这样做,这是一个性质。如果它 是 一个属性,则不仅会返回该eggs对象(就像对其他任何属性一样),还会调用该__get__方法(因为我们一直在进行查找),并返回该方法返回的内容。
eggs
spam
__get__
__set__
__delete__
有关Python的数据模型和描述符的更多信息。