Python语言之一步解析面试题
从安 2019-06-11 来源 : 阅读 1678 评论 0

摘要:本篇文章主要讲述Python语言之一步解析面试题,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

本篇文章主要讲述Python语言之一步解析面试题,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

Python语言之一步解析面试题

第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  = 9def 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()

 

本文由职坐标整理发布,学习更多的相关知识,请关注职坐标IT知识库!

本文由 @从安 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved