首页 > 其他 > 详细

<每日一题>题目17:super()继承相关的面试题

时间:2019-02-13 00:13:23      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:权限   raise   true   alt   def   运行   避免   每日   无法运行   

class A(object):
    def go(self):
        print("go A go!")
    def stop(self):
        print("stop A stop!")
    def pause(self):
        raise Exception("Not Implemented")

class B(A):
    def go(self):
        super().go()
        print( "go B go!")

class C(A):
    def go(self):
        super().go()
        print("go C go!")
    def stop(self):
        super().stop()
        print("stop C stop!")

class D(B,C):
    def go(self):
        super().go()
        print("go D go!")
    def stop(self):
        super().stop()
        print("stop D stop!")
    def pause(self):
        print("wait D wait!")

class E(B,C): pass

a = A()
b = B()
c = C()
d = D()
e = E()

# 说明下列代码的输出结果
print("--------------")
a.go()
#"go A go!"
b.go()
#B继承A:"go A go!" "go B go!"
c.go()
#C继承A:"go A go!" "go C go!"
d.go()
#D继承B,C:从后往前C继承A:"go A go!" "go C go!" B继承A: "go B go!" "go D go!"只继承一次
e.go()
#E继承B,C:C继承A:"go A go!" "go C go!" B继承A:"go B go!"
print("-------------")
a.stop()
#"stop A stop!"
print(‘123‘)
b.stop()
#B继承A:B本身没有stop方法:"stop A stop!"
print("123")
c.stop()
#C继承A:"stop A stop!" "stop C stop!"
d.stop()
#D继承B,C:C继承A:"stop A stop!" "stop C stop!" "stop D stop!"
e.stop()
#E继承B,C:C继承A:"stop A stop!" "stop C stop!"
print("$$$$$$$$$$$$$$")
a.pause()
#直接抛出异常了,程序结束,后面的程序都不会执行了
# 关键字raise是用来抛出异常的,一旦抛出异常后,后续的代码将无法运行。这实际上的将不合法的输出直接拒之门外,避免黑客通过这种试探找出我们程序的运行机制,从而找出漏洞,获得非法权限。
print("!!!!!!!!!!!!")
b.pause()
c.pause()
d.pause()
e.pause()

  运行结果:

技术分享图片

技术分享图片

技术分享图片

<每日一题>题目17:super()继承相关的面试题

标签:权限   raise   true   alt   def   运行   避免   每日   无法运行   

原文:https://www.cnblogs.com/shuimohei/p/10367611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号