牛客网专项练习30天Pytnon篇第29天

1.有如下类定义,下列描述错误的是:(D)

class A(object):
    pass
class B(A):
    pass
b = B()

A.isinstance(b, A) == True

B.isinstance(b, object) == True

C.issubclass(B, A) == True

D.issubclass(b, B) == True

解析:

       abc isinstance(object,classinfo),用于判断object是否是classinfo的一个实例,或者object是否是classinfo类的子类的一个实例,如果是返回True;issubclass(class,classinfo),用于判断class是否是classinfo类的子类,如果是返回True。


 2.有如下类定义,下列描述正确的是:(D)

class Person:
	def __init__(self):
		pass
	def getAge(self):
		print(__name__)
p = Person()
p.getAge()

A.Person   

B.getAge 

C.usr.lib.python.person 

D.__main__

解析:

        __name__这个系统变量显示了当前模块执行过程中的名称,如果当前程序运行在这个模块中,__name__ 的名称就是__main__如果不是,则为这个模块的名称;__main__一般作为函数的入口,类似于C语言,尤其在大型工程中,常常有if __name__ == "__main__":来表明整个工程开始运行的入口。


3.执行以下程序,输出结果为:(B

class Base(object):
	count = 0
	def __init__(self):
		pass
b1 = Base()
b2 = Base()
b1.count = b1.count + 1
print(b1.count,end=" ")
print(Base.count,end=" ")
print(b2.count)

A.1 1 1   

B.1 0 0 

C.1 0 1 

D.抛出异常

解析:

        count为类属性,类属性可以为实例属性提供默认值,也就是,当使用b1.count时,count成了b1对象的实例属性,实例属性不会影响到类属性的值,也不会影响到其他实例属性,所以对b1.count进行修改时只会影响自身,Base.count和b2.count的值仍为0。


4.根据以下程序,下列选项中,说法正确的是:(C

class Foo():
    def __init__(self):
        pass
    def __getitem__(self,pos):
        return range(0,30,10)[pos]
foo = Foo()

A.foo对象表现得像个序列

B.可以使用len(foo)来查看对象foo的元素个数

C.可以使用for i in foo:print(i)来遍历foo的元素

D.不能使用foo[0]来访问对象foo的第一个元素

解析:

       若要表现像个序列,必须满足序列的两个方法:__len__和__getitem__,由于Foo类中没有实现__len__,因此不满足序列协议,foo对象不像序列,A错误;foo对象没有定义__len__方法,不能使用它来查看对象个数,B错误;对对象的迭代需要调用__iter__,如果没有定义该方法,python会调用__getitem__(),让迭代和in运算符可用,因此foo是可迭代的,C正确;根据索引访问对象元素,会调用__getitem__(),因此D错误。

5.已知print_func.py的代码如下:

print('Hello World!')
print('__name__value: ', __name__)
def main():
    print('This message is from main function')
if __name__ =='__main__':
    main()

已知print_module.py的代码如下:

import print_func
print("Done!")

运行print_module.py程序,结果是:(A)

A.Hello World!  __name__ value: print_func  Done!

B.Hello World!  __name__ value: print_module  Done!

C.Hello World!  __name__ value: __main__  Done!

D.Hello World!  __name__ value:  Done!

解析:

       一个模块中有__name__,直接运行 __name__为 __main__,调用该模块,__name__为被调用模块的模块名。


牛客网专项练习30天Pytnon篇第29天_第1张图片

 

 

你可能感兴趣的:(牛客网,python,开发语言,后端)