《Python程序设计基础项目化教程习题项目十类与对象高级应用.docx》由会员分享,可在线阅读,更多相关《Python程序设计基础项目化教程习题项目十类与对象高级应用.docx(5页珍藏版)》请在第壹文秘上搜索。
1、类与对象高级应用测试习题测试习题一、填空题1. Python提供了变量以限制可动态扩展的属性。2. Python提供了装饰器,可以将类中属性的访问和赋值操作自动转为方法调用,这样可以在方法中对属性值的取值范围做一些条件限定。3. 直接使用PrOPerty可以定义一个用于获取属性值的方法(即getter如果需要对属性score定义一个设置属性值的方法(setter),需要用到的装饰器为O4. 可以看成是创建类时所使用的模板,也可以理解为是用于创建类的类。5. 是指在程序运行时确保某个类最多只有一个实例对象。6. 在执行_init_前,还会执行类的一个内置的类方法,其作用是创建对象并返回。二、选择
2、题1 .关于类方法的说法错误的是()A.类方法是指使用dassmethod修饰的方法B.类方法的第一个参数是类本身(而不是类的实例对象)C.类方法既可以通过类名直接调用,也可以通过类的实例对象调用。D.类方法只能通过类名直接调用2 .关于静态方法的说法错误的是()A.静态方法是指使用StatiCmethod修饰的方法B.静态方法的第一个参数是类本身(而不是类的实例对象)C.静态方法既可以通过类名直接调用,也可以通过类的实例对象调用。D.静态方法中没有类方法中的第一个类参数3 .已知Complex类的类方法add(ds,cl,c2)实现两个复数的相加运算,程序可以使用不同的方式调用该方法,下面错
3、误的调用方式是()A. c3=Complex.add(clzc2)B. c3=cl.add(cl,c2)C. c3.add(Complex,clC2)D. c3=Complex().add(cl,c2)4 .关于动态扩展类的说法正确的是()A. Python除了可以在定义类时定义属性和方法外,还可以动态地为已经创建的对象绑定新的属性和方法B. Python只能在定义类时定义属性和方法,不能动态扩展C. Python只能动态扩展属性,不能动态扩展方法D. Python只能动态扩展方法,不能动态扩展属性三、简答题1.下面程序对圆柱体类Cylinder实现动态绑定方法,请将程序填写完整。fromty
4、pesimportMethodType#从types模块导入MethodType方法classCylinde匚passdefSetRadius(selfzr):self.Radius=rdefSetHeight(selfzh):self.Height=hif_name_=_main_:cl=Cylinder()c2=Cylinder()#为cl对象绑定SetRadius方法cl.SetRadius=(SetRadiuszCl)#为Cylinder类绑定SetHeight方法CyIinderSetHeight=cl.SetRadius(10)c2.SetRadius(20)#c2对象未绑定SetRadius方法,此语句有误cl.SetHeight(30)c2.SetHeight(40)2.写出下面程序的运行结果。classCylinder:Radius=5Height=IOdefDispIay(SeIf):Print(圆柱体半径为,self.Radius)classCircle:Radius=50defDispIay(SeIf):Print(圆半径为,self.Radius)if_name_=_maincl=Cylinder()c2=Circle()cl.Display()c2.DispIayO