大厂5G python自动化测试面试必会 | 对象与面向对象(1)

COCOgsta GSTA 高级工程师  2021-11-14 09:48:29

1、Python导入模块的方法有哪两种?

参考:《Dive Into Python》

答:from module import 以及 import module

2、函数__init__()与传统意义上的构造函数区别是什么?

参考:《Dive Into Python》        

答:__init__在类的实例创建后被立即调用。它可能会引诱你称之为类的构造函数,但这种说法并不正确。说它引诱,是因为它看上去像(按照习惯,__init__是类中第一个定义的方法),行为也  像(在一个新创建的类实例中,它是首先被执行的代码),并且叫   起来也像(“init”当然意  味着构造的本性)。说它不正确,是因为对象在调用 __init__时已经被构造出来了,你已经有了一个对类的新实例的有效引用。但 __init__是在 Python中你可以得到的最接近构造函数的东西,并且它也扮演着非常相似的角色。

3、导入模块时,Python的搜索路径是什么?

参考:《Dive Into Python》        

答:当导入一个模块时,Python在几个地方进行搜索。明确地,它会对定义在 sys.path中的目录逐个进行搜索。它只是一个list (列表),可以容易地查看它或通过标准的list方法来修改它。

4、Python导入模块的两种方式有哪些区别?

参考:《Dive Into Python》        

答:from UserDict import UserDict与 import module语法很相似,但是有一个重要的区别:UserDict被直接导入到局部名字空间去了,所以它可以直接使用,而不需要加上模块名的限定。你可以导入独立的项或使用 from module import *来导入所有东西。

5、from UserDict import UserDict的应用场景有哪些?

参考:《Dive Into Python》        

答:如果你要经常访问模块的属性和方法,且不想一遍又一遍地敲入模块名,使用 from module import。
如果你想要有选择地导入某些属性和方法,而不想要其它的,使用 from module import。
如果模块包含的属性和方法与你的某个模块同名,你必须使用 import module来避免名字冲突。

6、如何在Python中对类进行实例化?

参考:《Dive Into Python》        

答:在 Python中对类进行实例化很直接。要对类进行实例化,只要调用类 (就好像它是一个函数),传入定义在 __init__方法中的参数。返回值将是新创建的对象。

7、子类在对父类方法进行重写时是否有限制?如果有,请列举出来。

参考:《Dive Into Python》        

答:在子类中,任何方法都可能被重写,也就是说重新实现,这一点与Java(除了其“final”方法之外)是相同的。

8、专用类方法与普通的类方法调用方式是相同的吗?如果不是,不同点在哪里?

参考:《Dive Into Python》        

答:除了普通的类方法,Python类还可以定义专用方法。专用方法是在特殊情况下或当使用特别语法时由 Python替你调用的,而不是在代码中直接调用 (像普通的方法那样)。

9、如何在Python中定义一个类?

参考:《Dive Into Python》        

答:在 Python中定义类很简单。就像定义函数,没有单独的接口定义。只要定义类,然后就可以开始编码。Python类以保留字class开始,后面跟着类名。从技术上讲,有这些就够了,因为一个类并非必须从其它类继承。

10、任意Python类的第一个参数是什么?

参考:《Dive Into Python》        

答:习惯上,任何 Python类方法的第一个参数 (对当前实例的引用) 都叫做self。这个参数扮演着C++或 Java中的保留字this的角色,但 self在 Python中并不是一个保留字,它只是一个命名习惯。虽然如此,也请除了 self之外不要使用其它的名字,这是一个非常坚固的习惯。

11、Python与其他语言如JAVA的Function Overloading有哪些区别?

参考:《Dive Into Python》        

答:Java和 Powerbuilder支持通过参数列表的重载,也就是 一个类可以有同名的多个方法,但这些方法或者是参数个数不同,或者是参数的类型不同。其它语言(最明显  如 PL/SQL) 甚至支持通过参数名的重载,也就是 一个类可以有同名的多个方法,这些方法有相同类型,相同个数的参数,但参数名不同。Python两种都不支持,总之是没有任何形式的函数重载。一个 __init__方法就是一个 __init__方法,不管它有什么样的参数。每个类只能有一个 __init__方法,并且如果一个子类拥有一个 __init__方法,它总是覆盖父类的 __init__方法,甚至子类可以用不同的参数列表来定义它。

12、专用方法__repr__()的作用是什么?

参考:《Dive Into Python》        

答:__repr__是一个专用的方法,在当调用 repr(instance)时被调用。repr函数是一个内置函数,它返回一个对象的字符串表示。它可以用在任何对象上,不仅仅是类的实例。你已经对 repr相当熟  悉了,尽管你不知道它。在交互式窗口中,当你只敲入一个变量名,接着按ENTER,Python使用 repr来显示变量的值。

13、专用方法__cmp__()的作用是什么?

参考:《Dive Into Python》        

答:__cmp__在比较类实例时被调用。通常,你可以通过使用 ==比较任  意两个Python对象,不只是类实例。有一些规则,定义了何时内置数据类型被认为是相等的,例如,字典在有着全部相同的关键字和值时是相等的。对于类实例,你可以定义__c mp__方法,自已编写比较逻辑,然后你可以使用==来比较你的类,Python将会替你调用你的 __cmp__专用方法。

14、Python有哪些私有概念?

参考:《Dive Into Python》        

答:私有函数:不可以从它们的模块外面被调用
私有类方法:不能够从它们的类外面被调用
私有属性:不能够从它们的类外面被访问

15、Python如何表明一个函数,类方法或属性是私有的?

参考:《Dive Into Python》        

答:与大多数的语言不同,一个Python函数,方法,或属性是私有还是公有,完全取决于它的名字。如果一个 Python函数,类方法,或属性的名字以两个下划线开始(但不是结束),它是私有的;其它所有的都是公有的。Python没有类方法保护的概念(只能用 于它们自已的类和子类中)。类方法或者是私有(只能在它们自已的类中使用) 或者是公有(任何地方都可使用)。

...全文
131 1 收藏 回复
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
相关推荐
发帖
Python全栈技术社区
创建于2020-11-25

7462

社区成员

创建由Python学习者和社区专家组成的国内最大的第三方Python中文社区,帮助社区成员更好地入门学习、职业成长和应用实践
帖子事件
编辑了帖子
2021-11-14 09:49
创建了帖子
2021-11-14 09:48
社区公告

创建由Python学习者和社区专家组成的国内最大的第三方Python中文社区,帮助社区成员更好地入门学习、职业成长和应用实践

  • 这里有最新最全的 Python 学习内容及资源,每月多达4次技术公开课
  • 这里有众多 Python 学习者,陪伴你一起交流成长
  • 这里有专业 Python 社区专家、讲师,帮助你跨越学习瓶颈,解决实操难题
  • 这里有丰富的社区活动,可以开阔眼界,结识更多同伴

【最新活动】:

  1. 周四技术公开课讲师招募中,点击查看详情
  2. “Python 社区专家团” 招募中,点击查看详情