python面试常考测试题

时间:2020-12-05作者:猫老师阅读量:145

不管你是应聘Python网络开发人员、爬虫工程师,还是数据分析人员,或者自动化运营人员,这些python面试的基本问题有十大陷阱,可能你都会遇到,今天的python培训总结习题给你以备不时之需!

测试题

1: 请问怎样修改以下python代码,使得下面的代码调用类A的show方法?

  1. class A():
  2.  
    def show(self):
  3.  
    print("base show")
  4.  
    class B(A):
  5.  
    def show(self):
  6.  
    print("derived show")
  7.  
    obj = B()
  8.  
    obj.show()

答:这道题的考点是类继承,只要通过__class__方法指定类对象就可以了。修改如下,其实就是只补充了一行obj.__class__ = A代码:

  1. class A():
  2.  
    def show(self):
  3.  
    print("base show")
  4.  
    class B(A):
  5.  
    def show(self):
  6.  
    print("derived show")
  7.  
    obj = B()
  8.  
    obj.__class__ = A
  9.  
    obj.show()
     
  1. class A():
  2.  
    def show(self):
  3.  
    print("base show")
  4.  
    class B(A):
  5.  
    def show(self):
  6.  
    print("derived show")
  7.  
    obj = B()
  8.  
    obj.__class__ = A
  9.  
    obj.show()

2:请问怎样修改以下python代码,使得代码能够运行?
class A():

  1.  
    def __init__(self, a, b):
  2.  
    self.__a = a
  3.  
    self.__b = b
  4.  
    def myprint(self):
  5.  
    print('a =', self.__a, 'b =', self.__b)
  6.  
    a1 = A(10, 20)
  7.  
    a1.myprint()
  8.  
    a1(80)
     

答:此题考察的是方法对象,为了能让对象实例能被直接调用,需要实现 __call__ 方法,补充代码如下:

  1. def __call__(self, num):
  2.  
    print('call:', num + self.__a)
     

调用加a的值只是一个示例,也可以加b的值等,题目主要考的是实现call调用。

完整代码如下:

  1. class A():
  2.  
    def __init__(self, a, b):
  3.  
    self.__a = a
  4.  
    self.__b = b
  5.  
    def myprint(self):
  6.  
    print('a =', self.__a, 'b =', self.__b)
  7.  
    def __call__(self, num):
  8.  
    print('call:', num + self.__a)
  9.  
    a1 = A(10, 20)
  10.  
    a1.myprint()
  11.  
    a1(80)


3: 下面这段代码的输出是什么?

  1. class B():
  2.  
    def fn(self):
  3.  
    print('B fn')
  4.  
    def __init__(self):
  5.  
    print('B INIT')
  6.  
    class A():
  7.  
    def fn(self):
  8.  
    print('A fn')
  9.  
    def __new__(cls, a):
  10.  
    print("NEW", a)
  11.  
    if a > 10:
  12.  
    return super(A, cls).__new__(cls)
  13.  
    return B()
  14.  
    def __init__(self, a):
  15.  
    print("INIT", a)
  16.  
    a1 = A(5)
  17.  
    a1.fn()
  18.  
    a2 = A(20)
  19.  
    a2.fn()

答:

输出的结果为

  1. NEW 5
  2.  
    B INIT
  3.  
    B fn
  4.  
    NEW 20
  5.  
    INIT 20
  6.  
    A fn

此题考察的是new和init的用法,使用 __new__方法,可以决定返回那个对象,也就是创建对象之前调用的,这个常见于于设计模式的单例、工厂模式。

__init__是创建对象是调用的。

关于《python面试常考测试题》的相关内容,就给大家讲到这里。

本文链接地址:https://www.xiaozeseo.com/jzjc/338.html 未经允许禁止转载。

相关栏目

推荐内容

热点内容