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

第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. TCP服务器端和客户端程序设计【转】

    本文转载自:http://blog.csdn.net/yueguanghaidao/article/details/7035248# 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.实验目的 ...

  2. spawning cl.exe

    可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的“Compiling... ,Error spawning cl.exe”错误提示给郁闷过.很多人的选择是重装,实际 ...

  3. gVim/Vim 一键编译、连接、运行 C/C++ 单文件

    用于Gvim 或 Vim 配置文件的一键编译与运行函数(注:需要机器上安装了GCC才行) 本代码只加入了对C/C++的编译与运行,如果要加入其语言的可以参考此代码加入即可 同时,本代码加入了对Wind ...

  4. jQuery 中的常用函数

    on() : 方法在被选元素及子元素上添加一个或多个事件处理程序.自1.7 版本起,on()方法是 bind(),live() 和 delegate()方法的替代品 语法: $(selector).o ...

  5. python学习笔记:第七天(函数)

    Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率. 与C一样,Python提供了许多内建函数,比如print().同 ...

  6. 【Codeforces】Gym 101156E Longest Increasing Subsequences LIS+树状数组

    题意 给定$n$个数,求最长上升子序列的方案数 根据数据范围要求是$O(n\log n)$ 朴素的dp方程式$f_i=max(f_j+1),a_i>a_j$,所以记方案数为$v_i$,则$v_i ...

  7. ctypes模块与pywin32模块

    ctypes模块: 主要用于调用c动态链接库. 1.聊聊Python ctypes模块 2.ctypes模块管理 相关网址: pywin32模块: 用于访问win32API函数(win32api模块) ...

  8. codeforces 703D D. Mishka and Interesting sum(树状数组)

    题目链接: D. Mishka and Interesting sum time limit per test 3.5 seconds memory limit per test 256 megaby ...

  9. UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)

    py文件直接在cmd窗口用python命令执行时正常:代码逐句在ipython中也正常:但是, 在wingIDE中运行报错“UnicodeEncodeError: 'ascii' codec can' ...

  10. linux命令学习笔记(26):用SecureCRT来上传和下载文件

    用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. ...