这几道Python面试题,稳准狠,Python面试题No15
【摘要】
文章目录
必须放一个表情包,太魔性了!第1题: 修改以下Python代码,使得下面的代码调用类A的show方法?第2题:修改以下Python代码,使得代码能够运行第3题: 下面这段代码的输出是什么?第4题: 下面这段代码输出什么?第5题:如何添加代码,使得没有定义的方法都调用myfunc方法?第6题:关注题,最近在公号更新一个神奇的系列入门文章
必须放...
必须放一个表情包,太魔性了!
第1题: 修改以下Python代码,使得下面的代码调用类A的show方法?
原始代码
class A(object): def run(self): print("基础 run 方法")
class B(A): def run(self): print("衍生 run 方法 ")
obj = B()
obj.run()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
面试要点:
类继承,只要通过
__class__
方法指定类对象就可以了。
修改代码
class A(object): def run(self): print("基础 run 方法")
class B(A): def run(self): print("衍生 run 方法 ")
obj = B()
obj.__class__ = A
obj.run()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
第2题:修改以下Python代码,使得代码能够运行
原始代码
class A(object): def __init__(self,a,b): self.__a = a self.__b = b def show(self): print("a=",self.__a,"b=",self.__b)
a = A(5,10)
a.show()
a(20)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
面试要点:
是方法对象,为了能让对象实例能被直接调用,需要实现
__call__
方法
修改代码
class A(object): def __init__(self,a,b): self.__a = a self.__b = b def show(self): print("a=",self.__a,"b=",self.__b) def __call__(self, num): print("call:",num + self.__a)
a = A(5,10)
a.show()
a(20)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
第3题: 下面这段代码的输出是什么?
原始代码
class B(object): def __init__(self): print("B init") def run(self): print("B run func")
class A(object): def run(self): print("A run func") def __new__(cls, a): print("new",a) if a>10: return super(A,cls).__new__(cls) return B() def __init__(self,a): print("init",a)
a1 = A(5)
a1.run()
a2 = A(20)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
这个运行需要对代码比较熟悉了
结果如下
# a1 = A(5)
new 5
B init
# a1.run()
new 5
B init
B run func
# a2 = A(20)
new 5
B init
B run func
new 20
init 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
第4题: 下面这段代码输出什么?
原始代码
num = 9
def fn1(): num = 20
def fn2(): print(num)
fn2() # 9
fn1() # 啥都没有
fn2() # 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
全局变量和局部变量。
num 不是个全局变量,所以每个函数都得到了自己的 num 拷贝,如果你想修改 num ,则必须用 global 关键字声明
第5题:如何添加代码,使得没有定义的方法都调用myfunc方法?
原始代码
class A(object): def __init__(self,a,b): self.a1 = a self.b1 = b print("初始化方法") def myfunc(self): print("myfunc")
a1 = A(10,20)
a1.fn1()
a1.fn2()
a1.fn3()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
修改代码
class A(object): def __init__(self,a,b): self.a1 = a self.b1 = b print("初始化方法") def myfunc(self): print("myfunc") def __getattr__(self, item): return self.myfunc
a1 = A(10,20)
a1.fn1()
a1.fn2()
a1.fn3()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
考点
python的默认方法, 只有当没有定义的方法调用时,才会调用方法__getattr__
。
当 fn1 方法传入参数时,我们可以给 myfunc方法增加一个 *args 不定参数来兼容。
第6题:关注题,最近在公号更新一个神奇的系列入门文章
她专科学历
27岁从零开始学习c,c++,python编程语言
29岁编写百例教程
30岁掌握10种编程语言,
用自学的经历告诉你,学编程就找梦想橡皮擦
欢迎关注她的公众号,搜索
序号 | 文章 |
---|---|
Python面试题No1 | Python基础面试,看这篇文章画重点吧 |
Python面试题No2 | Python面试快问快答,理论要的就是速度与精准 |
Python面试题No3 | 学习Python一年,基础忘记了,看看面试题回忆回议 |
Python面试题No4 | 去面试Python工程师,这几个基础问题一定要能回答 |
Python面试题No5 | 2019年,Python工程师必考的6个面试题 |
Python面试题No6 | 昨天去面试,这5个Python面试题都被考到了 |
Python面试题No7 | 周三面试Python开发,这几道Python面试题差点答错,Python面试题No7 |
Python面试题No8 | 面试Python工程师,这几道编码题有必要背背 |
Python面试题No9 | 又面试了Python爬虫工程师,碰到这么几道面试题 |
Python面试题No10 | 朋友去面试Python工程师,又带回来几道基础题 |
Python面试题No11 | 刚毕业去面试Python工程师,这几道题太难了 |
文章来源: dream.blog.csdn.net,作者:梦想橡皮擦,版权归原作者所有,如需转载,请联系作者。
原文链接:dream.blog.csdn.net/article/details/89854138
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)