python中的类属性和实例属性

python中的实例属性指和每个实际实例相关的属性,当类A继承自B时,a = A()读取a.data,会首先在a.dict中查找data,也就是实例中查找data属性,dict其实就是存储实例属性的地方。当在a中查找到时(也就是在dict中),返回该指,如果data属性不在a中,那么会查找类及父类中的该属性。当对a.data赋值时,由于python动态绑定(或者其他原因),就直接在a的dict中赋值,比如append方法。

不管是类A,类B还是A的实例a或者B的实例b,在python眼中,它们都是实例,需要有位置存放与这些实例相关的数据,这正是dict的作用,此外除了dict外,在内部可能还会有个code属性,用来查找代码的位置等。另外,python看待类A和类B是完全一样的,它们都是同一个类型,继承关系只是规定了python在访问对象实例(python眼中的)的属性时,需要去哪里找而已。

以上是我个人观点,不代表正确,欢迎大家指正。

发表评论

电子邮件地址不会被公开。 必填项已用*标注