{out_exp_key:out_exp_value for out_exp in input_list}
li = ['age','name','gender']dic = {i:li.index(i) for i in li} # i 是值还是索引?i 是值print(dic) # 可以形成字典形式for i in li: print(li.index(i)) #输出索引值
集合推导式{out_exp_res for out_exp in input_set}
#集合:无序,去重#生成10个1-100的元素,进行去重import random #随机模块for i in range(10):#产生0-9整数序列(10个) print(random.randint(1,100))#[1,100]随便生成一个整数s={random.randint(1,100) for i in range(10)}print(s)
注意:~没有元组推导式,(i for i in range(10)返回的是generator object)
面向对象编程 介绍:面向对象编程:objec oriented programming 简称:oop,是一种程序设计思想。
需要注意点是,与之相对应的是面向过程编程思想。实际上,能够使用面向对象编程思想实现的程序,也都能通过面向过程完成。只是看哪种思想更适合当前开发需求。
面向对象概念及术语类:对象,实例化,实例变量,类变量
方法:静态方法,类方法,方法重写,数据成员
封装,继承,多态
类 类的构成类由三个部分构成
~类的名称:类名
~类的属性:一组数据
~类的方法:允许对类进行操作的方法
类的定义python使用class关键字来定义类,其基本结构如下:
class MyClass:#class 定义类的关键字
pass
注意:类名通常采用这种驼峰式的命名方式,尽量让字面意思体现出来类的作用。
小练习:
~创建类:学生类
~创建对象:张三
~在类中定义方法输出:张三学习python
class Students: def study_python(self): print('zhangsan学习python') def study_C(self): print('zhangsan学习C') def study_java(self): print('zhangsan学习java')zs = Students()#创建对象,对象赋值给了zszs.study_python()# zhangsan学习pythonzs.study_C()# zhangsan学习Czs.study_java()# zhangsan学习java
self参数在类当中定义方法时,会发现系统帮我们自动创建了self参数,并且在调用对象的方法时,也无需传入self参数。那这个self是什么?
self的概念
~self本身就是形参
~self就是对象本身
class LogicStudents: def study_python(self): print(self.name,self.age,self.gender) print(self)# self代表的是对象,当创建的对象是谁,self就是谁zs= LogicStudents()zs.name = '张三'zs.age = 20zs.gender = '男'zs.study_python()print('-'*80)ls= LogicStudents()ls.name = '李四'ls.age = 21ls.gender = '男'ls.study_python()
__init__()方法__init__()方法称为初始化方法,也可以称为构造方法。在创建对象时,会自动执行该方法,为对象的属性设置初始值。
class Student: def __init__(self,name,age): self.name = name self.age = age def stu_info(self): print(self.name,self.age)zs= Student('zhangsan',19)# print('--2--')zs.stu_info()
__str__()方法如果在开发中,希望打印输出对象变量是,能够打印自定义内容。就可以使用__str__()方法,将自定义内容通过return关键字返回。
class Student: def __init__(self):#,name,age self.name = 'zhangsan' self.age = 19 def __str__(self):#返回值必须是字符串 # return self.name,self.age 返回元组类型,报错 return f'{self.name},{self.age}'zs= Student()print(zs)