这是本吧第35篇每周一练。
上期我们给出的题目是:
它们依次输出什么呢?
解析:
为什么最后一行输出的是:3 2 3?
这个答案的关键是,在 Python 中,类变量在内部是作为字典处理的。如果一个变量的名字没有在当前类的字典中发现,将搜索祖先类(比如父类)直到被引用的变量名被找到(如果这个被引用的变量名既没有在自己所在的类又没有在祖先类中找到,会引发一个 AttributeError 异常 )。
因此,在父类中设置 x = 1 会使得类变量 X 在引用该类和其任何子类中的值为 1。这就是因为第一个 print 语句的输出是 1 1 1。
随后,如果任何它的子类重写了该值(例如,我们执行语句 Child1.x = 2),然后,该值仅仅在子类中被改变。这就是为什么第二个 print 语句的输出是 1 2 1。
最后,如果该值在父类中被改变(例如,我们执行语句 Parent.x = 3),这个改变会影响到任何未重写该值的子类当中的值(在这个示例中被影响的子类是 Child2)。这就是为什么第三个 print 输出是 3 2 3。
希望有更多的同学能够参与到每周一练活动中!
今天我们给出的题目:
给定一个整型数组,找到第一个缺少的正整数。
例如:
[1,2,0]返回3,
[3,4,-1,1]返回2。
领取专属 10元无门槛券
私享最新 技术干货