推导式 (对前一章的推导式的补充)
字典推导式
{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()#创建对象,对象赋值给了zs
zs.study_python()# zhangsan学习python
zs.study_C()# zhangsan学习C
zs.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 = 20
zs.gender = '男'
zs.study_python()
print('-'*80)
ls= LogicStudents()
ls.name = '李四'
ls.age = 21
ls.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)