属性是一种特殊的属性。基本上,当Python遇到以下代码时:
spam = SomeObject()
print(spam.eggs)
它查找eggs
中spam
,然后检查eggs
,看它是否有一个__get__
,__set__
或__delete__
方法- 如果这样做,这是一个性质。如果它 是 一个属性,则不仅会返回该eggs
对象(就像对其他任何属性一样),还会调用该__get__
方法(因为我们一直在进行查找),并返回该方法返回的内容。
有关Python的数据模型和描述符的更多信息。