简单地说是Python的
属性是具有特殊功能的实例属性。..。 以下是定义只读属性的一种方法: 类矩形(对象):def __init__(自定义,宽度,高度):self.width = width self.height = height get_area(self):返回self.width * self.height area =属性(get_area,doc=‘该矩形的区域’) 类矩形的每个实例r都有一个合成的只读属性r.area,在方法r.get_area()中通过乘以边来动态计算。
属性是类属性还是实例属性?
Rectangle.__dict__是否存储类属性,而Rectangle实例的__dict__是否存储实例属性?如果是,下面是否显示该属性是一个类属性,而不是一个实例属性:>>> Rectangle.__dict__
mappingproxy({..., 'area': <property object at 0x7f34f7ee2818>})
>>> r=Rectangle(2,3)
>>> r.__dict__ {'width': 2, 'height': 3} 发布于 2017-06-27 22:13:13
property对象本身是一个类属性,正如它在类体中的位置所暗示的那样;您仍然可以访问实例上的类属性,但反之亦然。
使该属性不同的是描述符协议;在访问r.area的情况下,会发生以下情况(大致如此):
__get__,因此;因此,实际调用的是:
Rectangle.area.__get__(r, Rectangle)这就是属性描述符访问实例的状态的方式,而实际上是类上的一个属性;实例被传递给它。可以看出它是一个类属性,因为它在类上是可访问的,而不需要创建任何实例:
>>> Rectangle.area
<property object at 0x...>https://stackoverflow.com/questions/44790323
复制相似问题