每天五道面试题(6)

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__()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容