我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

class Vector:    __slots__='x','y'    def __init__(self):        passclass Vector3d(Vector):    __slots__='x','z'    def __init__(self):        passvector = Vector()vector3d = Vector3d()

A.若子类没有定义__slots__属性,则子类可以继承父类的__slots__属性

B.Vector类的实例对象vector会自动获得实例属性x和y

C.Vector3d类的实例对象vector3d最多只能允许属性x和z

D.Vector3d类的实例对象vector3d最多只能允许属性x、y和z

解析:

       __slots__属性用来限制实例对象的属性,实例对象的实例属性最多只能在__slots__属性值的范围内。如果子类没有定义__slots__属性,则不会继承父类的__slots__属性,如果子类定义了__slots__属性,则子类对象允许的实例属性包括子类的__slots__加上父类的__slots_。Python中凡是 "__" 开头的变量,都是私有变量,私有变量继承需要定义同名变量,因此A错误;__slots__是python类中的特殊变量,用于限制实例对象的属性,如__slots__='x','y',那么实例对象的属性就只能从这些里面找,因此它起的是限制效果而非自动获得,因此B错误;定义同名变量后子类继承父类的__slots__,从而支持xyz,因此C错误;故D选项正确。


2.运行下列四个选项的程序,不会抛出异常的是:(D)

A.

class Rect:    def __init__(self,width,height):        self.width = width        self.height = height    @property    def area(self):        return self.height* self.widthrect = Rect(10,20)rect.area()

B.

a = 0def fun():    a += 1print(a)fun()

C.

class Animal:    def __init__(self,color="白色"):        Animal.color = color    def get_color(self):        print("Animal的颜色为",Animal.color)class Cat(Animal):    def __init__(self):        passcat = Cat()cat.get_color()

D.

class Cat:    def __init__(self,color="白色"):        self.__color = colorcat = Cat("绿色")print(cat._Cat__color)

解析:

       A选项,使用property会将方法转为属性,因此rect.area()应该改为rect.area。B选项,当给作用域中的一个变量赋值时,Python 会自动的把它当做是当前作用域的局部变量,从而会隐藏外部作用域中的同名变量,因此a += 1会报错。C选项,子类若有定义__init__()函数时,将不会自动继承父类的构造函数,因此在调用父类的get_color()函数时,会出现Animal找不到属性color,修改时只需在子类的__init__()函数中添加语句:super().__init__()。D选项,尽管color属性为私有属性,但是在类外部使用时,仍可以通过实例名._类名__来访问。


3.根据以下代码,下列选项中,说法正确的是:(C)

class Rectangle:__count = 0def __init__(self,width,height):Rectangle.__count += 1self.__width = widthself.__height = height@propertydef area(self):return self.__height * self.__widthrectangle = Rectangle(200,100)

A.创建实例对象rectangle后,可在类外使用rectangle.area()来访问area属性

B.area属性为对象的非私有属性,可以访问和修改

C.变量__count的作用是为了统计创建对象的个数

D.因为__width和__height为私有变量,所以在类外不可能访问__width和__height属性

解析:

       使用@property将方法转为属性,该属性为只读属性,只可访问但是不可以修改,使用对象.方法名来访问该属性,但是方法不能再加小括号,故AB选项说法均错误;变量__count是类的私有变量,由于每次创建对象时,其值自增1,所以可以用来统计创建对象的个数,C正确;虽然__height和__width为私有变量,不能在类外直接使用对象名.属性名来访问,但是,仍可以使用rectangle._Rectangle__width和rectangle._Rectangle__height来强制访问,故D错误。


4.已知

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_funcprint("Done!")

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

A.

Hello World!__name__ value: print_funcDone!

B.

Hello World!__name__ value: print_moduleDone!

C.

Hello World!__name__ value: __main__Done!

D.

Hello World!__name__ value:Done!

解析:

       直接执行print_func.py模块,__name__="__main__'',如以导入模块的形式执行print_func文件,则__name__的值为该文件名print_func。


5.为了以下程序能够正常运行,横线处可以填入的语句是:(C

class Animal:def __init__(self,color):self.__color = color    @propertydef color(self):return self.__color    @_____________________def color(self,color):self.__color = coloranimal = Animal('red')print(animal.color)animal.color = 'white'print(animal.color)

A.property 

B.setter 

C.color.setter 

D.setter.color

解析:

       程序创建了一个animal对象,然后访问和修改对象的私有属性__color,@property装饰器,相当于一个get方法,用于获取私有属性值,因此需要补充的是setter方法。python对于setter装饰器的语法是:@方法名.setter,因此答案为C选项。property装饰器可以安全的改变函数的属性,利用装饰器的特性,就可以生成装饰器函数下方一样命名的变量,改变该函数就可以采用该函数名.setter;除此之外还有getter,和delter;注意getter的使用一定要在setter和delter之前。


66d4f184cd32437d90059085219d4aec.jpeg

 

来源地址:https://blog.csdn.net/u013157570/article/details/127136475

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录