Python学习(三)-类属性与对象属性
什么是类属性,什么是对象属性?
前面先讲一下动态类型与静态类型:
动态类型与静态语言有所不同的,由于python是动态类型,这意味着python在创建对象时是可以随意增加属性。
类属性是类本身的属性,无论这个类创建了多少的对象,其类属性依然只有一个,所以对象与对象之间可以共享类属性。
对象属性则是对象的属性,会根据对象的创建而创建,销毁而销毁,对象与对象之间不能共享对象属性。
特别注意:
如图,F类中有类属性f,以及在创建对象时产生的对象属性f。两个同名,此时千万不要搞混(当然在自己设计时,最好不要出现这种情况)。在图中,我们对f进行初始化为10,当时类属性却没有变,因为这里修改的是对象属性而不是类属性。当把f.f进行删除后,同样方式的访问却又回到了类属性。
如果对象属性与类属性名称相同时,类属性将会被隐藏(有点类似子类隐藏父类的同名方法),所有最好不要这么设计,很有误导性。
补充:如何看类属性有哪些?
可以直接通过dir()函数进行获取,如图:
顺带的加入一个新属性s,在列表中就是属于类的属性和方法,在最后就可以看到类属性f和s。
对象信息的获取
如果不是自己设计的类,就无法知道起对象的属性有什么了么?
可以通过getattr()、setattr()、hasattr()进行操作。