必须放一个表情包,太魔性了!

第1题: 修改以下Python代码,使得下面的代码调用类A的show方法?

原始代码


class A(object):
def run(self):
print("基础 run 方法") class B(A):
def run(self):
print("衍生 run 方法 ") obj = B()
obj.run()

面试要点:

类继承,只要通过__class__ 方法指定类对象就可以了。

修改代码

class A(object):
def run(self):
print("基础 run 方法") class B(A):
def run(self):
print("衍生 run 方法 ") obj = B()
obj.__class__ = A
obj.run()

第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)

面试要点:

是方法对象,为了能让对象实例能被直接调用,需要实现__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)

第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)

这个运行需要对代码比较熟悉了

结果如下

# 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

第4题: 下面这段代码输出什么?

原始代码

num  = 9
def fn1():
num = 20 def fn2():
print(num) fn2() # 9
fn1() # 啥都没有
fn2() # 9

全局变量和局部变量。

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

修改代码

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

考点

python的默认方法, 只有当没有定义的方法调用时,才会调用方法 __getattr__

当 fn1 方法传入参数时,我们可以给 myfunc方法增加一个 *args 不定参数来兼容。

第6题:关注题,最近在公号更新一个神奇的系列入门文章

用自学的经历告诉你,学编程就找梦想橡皮擦

欢迎关注她的公众号,搜索--- 非本科程序员

这几道Python面试题,稳准狠,Python面试题No15的更多相关文章

  1. 『Python题库 - 简答题』 Python中的基本概念 (121道)

    ## 『Python题库 - 简答题』 Python中的基本概念 1. Python和Java.PHP.C.C#.C++等其他语言的对比? 2. 简述解释型和编译型编程语言? 3. 代码中要修改不可变 ...

  2. 面试题之第一部分(Python基础篇) 80题

    第一部分(python基础篇)80题 为什么学习Python?==*== # 1. python应用于很多领域,比如后端,前端,爬虫,机器学习(人工智能)等方面,几乎能涵盖各个开发语言的领域,同时它相 ...

  3. Python学习【第一篇】Python简介

    Python简介 Python前世今生 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 现在,全世界差不多有600多种编 ...

  4. C语言面试题大汇总之华为面试题 Eddy整理

    1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局 ...

  5. 【python全栈开发】初识python

    本人最开始接触python是在2013年接触,写过hello word!在此之前对开发类没有多大兴趣,不知道重要性,属于浑浑噩噩,忙忙乎乎,跌跌撞撞的.随后选择了Linux运维作为就业主攻方向. 经过 ...

  6. python 全栈开发,Day43(python全栈11期月考题)

    python全栈11期月考题 1.常用字符串格式化有哪些?并说明他们的区别 2.请手写一个单例模式(面试题) 3.利用 python 打印前一天的本地时间,格式为‘2018-01-30’(面试题) 4 ...

  7. Python学习系列(四)Python 入门语法规则2

    Python学习系列(四)Python 入门语法规则2 2017-4-3 09:18:04 编码和解码 Unicode.gbk,utf8之间的关系 2.对于py2.7, 如果utf8>gbk, ...

  8. 『Python基础』第2节: Python简介及入门

    一. Python介绍 Python是一门高级计算机程序设计语言,1989年,荷兰的Guido von Rossum创造了它.Guido是是一个牛人,1982年,他从阿姆斯特丹大学获得了数学和计算机硕 ...

  9. python的库有多少个?python有多少个模块?

    这里列举了大概500个左右的库: !   Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主 ...

随机推荐

  1. Android Weekly Notes Issue #290

    Android Weekly Issue #290 December 31st, 2017 Android Weekly Issue #290 本期内容包括介绍Kotlin逆变协变的一篇(虽然没说清楚 ...

  2. 《机器学习实战》学习笔记第三章 —— 决策树之ID3、C4.5算法

    主要内容: 一.决策树模型 二.信息与熵 三.信息增益与ID3算法 四.信息增益比与C4.5算法 五.决策树的剪枝 一.决策树模型 1.所谓决策树,就是根据实例的特征对实例进行划分的树形结构.其中有两 ...

  3. LightOJ - 1038 Race to 1 Again —— 期望

    题目链接:https://vjudge.net/problem/LightOJ-1038 1038 - Race to 1 Again    PDF (English) Statistics Foru ...

  4. math worksheet作业纸生成器

    https://www.education.com/worksheet-generator/math/ https://www.mathgoodies.com/worksheets/generator ...

  5. MIS系统中的报表测试

    报表功能的基本要求,就是通过查询/统计/分析,提供用户所需的准确的数据.如果无法实现这个基本功能,则报表完全失去意义. 对于用户来说,报表可以直接影响到他们的决策,例如可能因为报表对销售和库存情况反映 ...

  6. VC++中list::list的使用方法总结

    本文主题 这几天在做图像处理方面的研究,其中有一部分是关于图像分割方面的,图像目标在分割出来之后要做进一步的处理,因此有必要将目标图像的信息保存在一个变量里面,一开始想到的是数组,但是马上就发现使用数 ...

  7. linux 进程学习笔记-进程状态

    task_struct的state字段记录的进程的状态,可分为如下几种: #define TASK_RUNNING 0 可运行状态.这是 “进程正在被CPU运行” 和 “进程正在可运行队列中等待被CP ...

  8. codevs 2144 砝码称重2

    传送门 2144 砝码称重 2  时间限制: 1 s  空间限制: 16000 KB  题目等级 : 钻石 Diamond 题解   题目描述 Description 有n个砝码,现在要称一个质量为m ...

  9. POJ3580:SuperMemo

    浅谈\(splay\):https://www.cnblogs.com/AKMer/p/9979592.html 浅谈\(fhq\)_\(treap\):https://www.cnblogs.com ...

  10. sulime的必备插件

    常用插件 : SideBarEnhancements HTML-CSS-JS Prettify BracketHighlighter SublimeCodeIntel Emmet CTags Mark ...