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

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

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

class Vector:
    __slots__='x','y'
    def __init__(self):
        pass
class Vector3d(Vector):
    __slots__='x','z'
    def __init__(self):
        pass
vector = 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.width
rect = Rect(10,20)
rect.area()

B.

a = 0
def fun():
    a += 1
print(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):
        pass
cat = Cat()
cat.get_color()

D.

class Cat:
    def __init__(self,color="白色"):
        self.__color = color
cat = 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 = 0
  def __init__(self,width,height):
  Rectangle.__count += 1
  self.__width = width
  self.__height = height
  @property
  def area(self):
  return self.__height * self.__width
rectangle = 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_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!

解析:


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


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

class Animal:
  def __init__(self,color):
  self.__color = color
    @property
  def color(self):
  return self.__color
    @_____________________
  def color(self,color):
  self.__color = color
animal = 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之前。


相关文章
|
设计模式 编解码 C++
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用(一)
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用
349 0
|
7月前
|
安全 Unix 虚拟化
Windows 7 & Windows Server 2008 R2 简体中文版下载 (2025 年 2 月更新)
Windows 7 & Windows Server 2008 R2 简体中文版下载 (2025 年 2 月更新)
234 11
Windows 7 & Windows Server 2008 R2 简体中文版下载 (2025 年 2 月更新)
|
9月前
|
人工智能 算法
AI+脱口秀,笑点能靠算法创造吗
脱口秀是一种通过幽默诙谐的语言、夸张的表情与动作引发观众笑声的表演艺术。每位演员独具风格,内容涵盖个人情感、家庭琐事及社会热点。尽管我尝试用AI生成脱口秀段子,但AI缺乏真实的情感共鸣和即兴创作能力,生成的内容显得不够自然生动,难以触及人心深处的笑点。例如,AI生成的段子虽然流畅,却少了那份不期而遇的惊喜和激情,无法真正打动观众。 简介:脱口秀是通过幽默语言和夸张表演引发笑声的艺术形式,AI生成的段子虽流畅但缺乏情感共鸣和即兴创作力,难以达到真人表演的效果。
|
XML 数据格式 Python
Python技巧:将HTML实体代码转换为文本的方法
在选择方法时,考虑到实际的应用场景和需求是很重要的。通常,使用标准库的 `html`模块就足以满足大多数基本需求。对于复杂的HTML文档处理,则可能需要 `BeautifulSoup`。而在特殊场合,或者为了最大限度的控制和定制化,可以考虑正则表达式。
517 12
|
12月前
|
存储 安全 物联网
探索未来网络:物联网安全的最佳实践与挑战
在数字化浪潮中,物联网作为连接万物的关键技术,已深刻改变我们的工作与生活方式。然而,随着其应用的广泛化,安全问题日益凸显,成为制约物联网发展的重要瓶颈。本文旨在深入探讨物联网的安全架构、风险点及应对策略,通过分析当前技术趋势和实际案例,提出一套切实可行的安全防护方案,以促进物联网技术的健康发展。
|
消息中间件 搜索推荐 RocketMQ
消息队列 MQ使用问题之如何将一个主题的多个分区分布到不同的Broker上
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
JSON 前端开发 JavaScript
Json格式化
Json格式化
|
机器学习/深度学习 人工智能 自然语言处理
人工智能浪潮下的自然语言处理技术演进
本文从自然语言处理(NLP)技术的历史发展出发,深入剖析了在人工智能(AI)大潮中该领域的创新突破。我们将探讨深度学习如何推动语言模型的革新、多语言处理技术的发展,以及机器翻译和语音识别的最新进展。文章还将讨论这些技术进步如何影响社会,并展望未来NLP技术的潜力与挑战。
350 0
|
SQL 关系型数据库 MySQL
flink cdc 同步问题之如何提高用户速度
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
分布式计算 DataWorks 关系型数据库
DataWorks中datax的odpsreader和tunnel是不同的读取mc方式?
DataWorks中datax的odpsreader和tunnel是不同的读取mc方式?
211 0