1 关于静态
它表示一个值,不会因为函数调用完毕而消失,它在每两个函数的间隙都存在。或者说,一个类中的一些函数数据对所有的实例来说,都是固定的。
2 类的数据属性:
即静态变量:表示这些数据与他们所属的类的对象是绑定的,不依赖于任何类实例
3 要知道一个类有那些属性,有两种方法。最简单的是使用dir()内建函数。另外是通过访问类的字典属性dict。
4 访问类属性:类属性可通过类或实例访问。修改类属性要使用类名,而不是实例名
5 python中的self
:self变量用于在类实例方法中引用方法所绑定的实例。因为方法的实例在任何方法调用中总是作为第一个参数传递的,self被选中用来代表实例。所以必须在方法中放上self,但是可以在方法中不试使用实例(self)。如果你的方法中没有用到self,那么请考虑创建一个常规函数
方法中没有实例(self),没有与类关联其功能。
6 绑定方法和调用
1)什么时候方法被调用:只有在方法所属的类拥有实例时,才能被调用。当存在一个实例时,方法才被认定为是绑定到那个实例了。没有实例时方法就是未绑定的。
2)任何一个方法定义中第一个参数都是self变量,它表示调用此方法的实例对象
当你还没有一个实例并且需要调用一个非绑定方法的时候你必须传递self参数
7 重写init不会自动调用基类的init
当一个带构造器的ini()的类派生,如果你不去覆盖ini(),它将会被继承并自动调用。但如果你在子类中覆盖了ini(),子类被实例化时,基类的ini()就不会被调用。
8 super()
class C (P):
def init(self):
super(C,self).init() #或者P.init(self),不过使用super()的漂亮之处在于,你不需要明确的给出任何基类名字。
print ‘calling C’s constructor’
9 对一个float做小数保留,保留两位小数
技术说明:round()内建函数对原浮点型进行摄入操作,实例化float,RoundFloat.通过调用父类的构造器来创建真实的对象,float.new()。这里需要注意new()方法都是类方法,我们要显示的传入类作为第一个参数
class RoundFloat(float):
def new(cls, val):
return float.new(cls,round(val,2))