Python面向对象中的继承有什么特点?
1、在继承中基类(父类)的构造(__ init__()方法)不会被自动调用,它需要在其派生类(子类)的构造中亲自专门调用。有别于C#
概述:子类可以不使用父类的__ init__()方法。
2、在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数
概述:在子类中调用父类的方法,需要加上父类的类名作为前缀。
3、Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。
概述:优先在子类中查找,找不到再去父类里面。
经典类与新式类?
什么是经典类?
不继承object的类都是经典类
python2x所有的类 默认 都不继承object类,所有的类默认都是经典类
python2x:(既有新式类,又有经典类) 你可以让他继承object类
什么是新式类?
凡是继承object的类都是新式类
python3x版本中,所有的类都是新式类,因为python3x中的类都默认继承object
是否使用过functools中的函数?其作用是什么?
functools用于高阶函数:指那些作用于函数或者返回其他函数的函数。通常情况下,只要是可以被当做函数调用的对象就是这个模块的目标。
reduce :累计算
wraps:保留原函数的属性
列举面向对象中带爽下划线的特殊方法,如:__ new__、__ init__
__ new__ 在实例化对象时触发,即控制着对象的创建
__ init__ 在对象创建成功后触发,完成对象属性的初始化
__ call__ 在调用对象时触发,也就是对象()时触发
__ setattr__ 在给对象赋值时触发,对象的属性若不存在则先创建
__ getattr__ 在对象.属性时触发,该属性必须不存在
__ mro__ 打印当前类的继承顺序
__ dict__ 打印出当前操作对象名称空间的属性和值
__ str__ 在打印对象时,触发,执行内部的代码
__ doc__ 类的文档字符串
面向对象中super的作用?
super()可以调用父类所有可以被继承的方法和对象属性,使用者是子类对象
super()本质上是 super(子类类名,子类对象)
super().父类普通方法 super().__ init__() super().func()
super(当前类名,self).__ init__() 等价于 super().__ init__()
网友评论