下列哪个选项是可迭代对象( D)?
知识点补充——【可迭代对象】
可迭代对象(iterable)是指可以通过迭代(iteration)来逐个访问其中元素的对象。
可迭代对象可以用于for循环或者其他接受可迭代对象作为输入的操作,如列表推导、生成器表达式等。
列表(list) 列表是有序的可变序列,可以通过for循环进行迭代。 元组(tuple) 元组是有序的不可变序列,和列表类似,可以通过for循环进行迭代。 集合(set) 集合是无序的不重复元素的集合,可以使用for循环进行迭代。 字典(dict) 字典是键值对的集合,可以使用for循环进行迭代,迭代时默认会遍历字典的键。 字符串(string) 字符串是字符的有序集合,可以通过for循环进行迭代,每次迭代得到一个字符。 文件对象(file object) 文件对象也是可迭代对象,可以按行迭代文件内容。 生成器(generator) 生成器也是可迭代对象,可以通过for循环进行迭代,每次迭代得到生成器产生的值。
下列导入模块的方式中,错误的是( D)。
导入模块的方式错误的是?(D )。
知识点补充——【模块的导入方式】
导入方式 语法示例 说明 import import module_name 导入整个模块 from-import from module_name import object_name 从模块中导入特定对象 as import module_name as alias_name 使用别名来导入模块 from-import-as from module_name import object_name as alias_name 使用别名来导入特定对象 import-all from module_name import * 导入模块中的所有对象 conditional-import try-import-except 根据条件导入模块 import math # 导入整个math模块 | from math import sqrt # 从math模块中导入sqrt函数 | import math as m # 使用别名m导入math模块 | from math import sqrt as square_root # 使用别名square_root导入math模块中的sqrt函数 | from math import * # 导入math模块中的所有对象 |
下列关于标准模块的说法中,错误的是(A )。
选项A:标准模块在使用之前需要先导入才能使用。
类的私有属性__private_attrs: 以两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。
在类内部的方法中使用时 self.__private_attrs。
类的私有方法__private_method: 以两个下划线开头,声明该方法为私有方法,不能在类的外部调用。
在类的内部调用 self.__private_methods
一、方法
1.类中的方法有三种定义形式:
(1)在类中直接定义:
class 类名: #使用class关键字定义类 属性名=属性值 #定义类的属性 def 方法名(self): #定义类的方法 方法体
(2)实例方法:
在类中直接定义,无前缀装饰器,只比普通函数多一个self的方法,但是只能通过类实例化的对象调用。
class Employee: # 类变量 empCount = 0 # 无前缀 @classmethod 是实例方法 ,参数必有 self,代表当前实例(对象) def displayEmployee(self): print("Name : ", self.name, ", empCount: ", self.empCount)
(3)使用@classmethod修饰的类方法和使用@staticmethod修饰的静态方法
类方法 实例方法 修饰器 使用装饰器@classmethod修饰 参数 第一个参数为cls,代表类本身 第一个参数为self,代表对象本身 被调用方式 类、对象均可直接调用 只能由对象调用
属性的修改 可以修改类的属性 无法修改类的属性 # 前缀 @classmethod 是 类方法 ,参数必有cls代表 本类 @classmethod def displayCount(cls): print("Total Employee: ", cls.empCount)
静态方法 实例方法 修饰器 使用装饰器@staticmethod修饰 成员访问 方法中需要以“类名.方法/属性名”的形式访问类的成员 方法中需要以“self.方法/属性名”的形式访问类的成员 被调用方式 类、对象均可直接调用 只能由对象调用
# 静态方法中 ,类名.方法/属性名”的形式访问类的成员 @staticmethod def static_method(): print(f"---静态方法-----Employee.empCount:",Employee.empCount)
2.类中还有两个特殊的方法——在类的创建和销毁时自动调用
(1)构造方法_init_()
每个类都有一个默认的__init__()方法。 如果定义类时显式地定义__init__()方法,那么创建对象时Python解释器会调用显式定义的__init__()方法; 可以根据参数的有无(self除外)分为无参构造方法和有参构造方法。
无参构造方法 可以为属性设置初始值,此时使用该方法创建的所有对象都具有相同的初始值。 有参构造方法 可以使用参数为属性设置初始值,此时使用该方法创建的所有对象都具有不同的初始值。 a.在类中定义的属性是类属性,是定义在方法体外公用的,类和对象都可以调用这些属性。
b.在构造方法中定义的属性是实例属性,只能通过对象进行访问。
(2)析构方法_del_(
当对象被清理时,系统会自动调用一个_del_()方法 当一个对象的引用计数器数值为0时,就会调用__del__()方法 ps:Python中的垃圾回收主要采用的是引用计数。引用计数是一种内存管理技术,它通过引用计数器记录所有对象的引用数量,当对象的引用计数器数值为0时,就会将该对象视为垃圾进行回收。 二、实例对象创建
其他编程语言中一般用关键字 new,但是在 Python 中并没有这个关键字,类的实例化类似函数调用方式。下面使用类的名称 Employee 来实例化,并通过 __init__ 方法接收参数。
#"创建 Employee 类的第一个对象" emp1 = Employee("Zara", 2000) #"创建 Employee 类的第二个对象" emp2 = Employee("Manni", 5000)
三、实例对象对属性的访问与修改
1、访问:
用以下函数的方式来访问属性:
getattr(obj, name[, default]) 访问对象的属性 hasattr(obj,name) 检查是否存在一个属性 setattr(obj,name,value) 设置一个属性。如果属性不存在,会创建一个新属性 delattr(obj, name) 删除属性 # 实例化对象,对象成员的访问 "创建 Employee 类的第一个对象" emp1 = Employee("Zara", 2000) print('\n ====== 获取数据 ======') a = getattr(emp1,'name') b = getattr(emp1,'namessss','不存在返回默认值') print("Employee name (emp1): ", a) print("Employee namessssss (emp1): ", b) print('\n ====== 更新属性取值 ======') setattr(emp1,'name','新-新名字') setattr(emp1,'namees','属性不存在,会创建一个新属性') print("Employee name (emp1): ", emp1.name) print("Employee namees (emp1): ", emp1.namees)
2、修改:
emp1.age = 7 # 添加一个 'age' 属性 emp1.age = 8 # 修改 'age' 属性 del emp1.age # 删除 'age' 属性
下列关于类的说法,错误的是(D )。
选项ABC都是对的,类的实例不仅可以访问类属性还可以修改类属性
下列关于类和对象的描述,正确的是(D )。
选项A:面向对象面向对象,对象是面向对象的核心
选项B:对象才可以用于描述现实事物中的个体
选项C:一个类可以有多个对象
类:是一种数据类型,用来描述具有相同的属性和方法的对象的集合,类的内部包括属性和方法两个部分。
对象:是类的实例。是现实世界中可以描述的事务。
下列选项中,哪个不属于面向对象程序设计的三大特征?( A)
封装、继承、多态是面向对象程序设计的三大特征
面向对象三大特征 描述 封装 是指把对象的属性和行为封装起来,不需要让外界知道具体的实现细节,其封装的对象部分属性和行为是私有的,外界无法访问。因而有效地实现了对数据和行为的包装与信息的隐藏
继承 描述的是类与类之间的关系,即一个派生类继承基类的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。而子类自动共享父类数据结构和方法的机制(子类在继承父类时会自动拥有父类的方法和属性),增加了代码的可重用性,简化了对象、类的创建工作量。 多态
下列选项中,关于封装说法错误的是( D)。
封装是指把对象的属性和行为封装起来,不需要让外界知道具体的实现细节,其封装的对象部分属性和行为是私有的,外界无法访问。因而有效地实现了对数据和行为的包装与信息的隐藏。
下列关于继承的说法中,错误的是(A )。
选项A—python有单继承也有多继承。
选项B\C—继承:子类在继承父类时会自动拥有父类的方法和属性
选项D—以两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。
关于面向对象的继承,以下选项中描述正确的是? (B )。
某个十字路口安装了一盏交通信号灯,汽车和行人接收到同一个信号时会有不同的行为。前面这句话可用来解释面向对象设计思想中的哪个特性?(D )
下列哪个选项是定义类时必须使用的关键字(C )。
通过下列哪个符号可以访问对象的成员( A)。
下列选项中,关于self的说法不正确的是( D)。
self 代表的是类的实例,代表当前对象的地址,而 self.__class__ 则指向类。
self 不是 python 关键字,我们把他换成其他的单词组成也是可以正常运行的。
下列方法中,用于初始化属性的方法是(B )。
下列选项中,关于构造方法说法不正确的是( B)A
构造方法_init_()
每个类都有一个默认的__init__()方法。 如果定义类时显式地定义__init__()方法,那么创建对象时Python解释器会调用显式定义的__init__()方法; 可以根据参数的有无(self除外)分为无参构造方法和有参构造方法。
无参构造方法 可以为属性设置初始值,此时使用该方法创建的所有对象都具有相同的初始值。 有参构造方法 可以使用参数为属性设置初始值,此时使用该方法创建的所有对象都具有不同的初始值。 a.在类中定义的属性是类属性,是定义在方法体外公用的,类和对象都可以调用这些属性。
b.在构造方法中定义的属性是实例属性,只能通过对象进行访问。
当一个对象的引用计数器数值为多少时,该对象会被视为垃圾回收(B )。
当一个对象的引用计数器数值为0时,就会调用__del__()方法
下列不可被类和实例同时调用的方法是(C )。
下列方法中,只能由对象调用的是( B)。
实例方法只能由对象调用
下列方法中,用来初始化对象属性的是( A)。
下列方法中,用来释放类所占用的资源的是(B )。
下列选项中,关于Python类的方法说法错误的是(B )
应该是@classmethod修饰器
关于面向过程和面向对象,下列说法错误的是( B)。
下列选项表示执行SQL语句返回受影响的行数方法时(A )。
连接数据库基本操作:
1.导入模块 import pymysql
2.创建Connection 对象:用于建立代码与数据库的连接,创建连接对象 conn=connect(参数列表)
3.通过连接获取游标 cur = conn.cursor()返回Cursor对象,用于执行sql语句并获得结果
4.使用游标执行SQL语句 cur.execute(operation , [参数])
5.执行SQL语句,返回受影响的行数,主要用于执行insert、update、delete语句 6.使用游标对象操作结果集 7.提交数据 conn.commit()和撤销数据 conn.rollback() 8.关闭游标 cur.close() 9.关闭连接 conn.close()
1.pymysql模块可用于Python连接MySQL数据库。(对)
2.turtle是Python内置的一个标准模块(对)
*3.包中的__init__.py文件为空时,可以不存在。(对)错
4.from 模块名 import …方式可以简化模块中内容的引用,但存在函数重名的隐患,因此相对而言使用import语句导入模块更加安全。 (对)
5.第三方模块是由非官方制作发布的、供大众使用的Python模块,在使用之前需要开发人员先自行安装。(对)
6.自定义模块也通过import语句和from…import…语句导入。(对)
27.子类在继承父类时,会自动拥有父类中的方法和属性。(对)
28.通过类的实例可以直接访问该类的私有成员。( 错)
31.类定义完成后不能直接使用,程序中的类需要实例化为对象才具有意义。(对)
33.Python在定义类时,类名首字母一般为大写。(对)
34.Python在定义类时,类名后的冒号必不可少。(对)
35.类中的数据成员用于描述对象的特征,成员函数用于描述对象的行为。(对)
36.面向过程和面向对象都是解决问题的一种思路。(对)
37.类中定义的属性和方法默认为公有属性和方法,可以被对象任意访问。 (对)
*40.定义类时可以定义__init__()方法,也可以不定义__init__()方法。(错)对