面向过程编程
面向对象编程
类的定义和对象的产生
定制对象自己独有的属性
属性的查找顺序(类属性,对象属性)
—————————————————————————————————————————————————————————————在编程中,面向过程和面向对象是编程的两大编程思想,分别是:面向过程和面向对象
什么是面向过程
面向过程中核心是过程 就是机械式的思维方式
案例:洗衣机的工作过程
优点:复杂的问题简单化、进而流程化
缺点:扩展性差,牵一发而动全身
应用场景: 一般用在对扩展性要求比较差的情况
使用面向过程写一个注册的案例来体会面向过程的优缺点、
1. 先让用户输入用户名和密码
2. 验证参数
3. 直接把数据写入文件中
——————————————————————————————————————————————————————————面向对象编程
面向对象中对象是核心
在python中一切都是对象
对象是什么?
在生活中:
对象就是'特征'与'技能'的集合体
在程序中:
对象就是盛放'数据属性'和'功能'的容器
优点:扩展性强
缺点:简单的问题复杂化了
举例:学生选课系统
——————————————————————————————————————————————————类的定义和对象的产生
对象:是特征与技能的结合体
在不同的角度 类是不一样的
类:一系列相似特征和相似技能的结合体
******************************************************
在程序中 一定是先有类,然后调用类,产生对象
*******************************************************
类的定义:
def index():
pass
class student():
pass
函数中的括号一定不能省略
1.关键字使用class 来声明
2. class后面写的是类名,类名的命名:一般情况下遵循变量的命名规范即可,类名一般首字母都要大写,(小写也行,但是不推荐)
3. 如果你的类名比较长,推荐使用驼峰法,并且是大驼峰
4. 类名后面的小括号不能省略
定义类发生了哪些事情?
1. 类一旦定义完成,会立马执行类体代码
2. 会产生类的名称空间,其实就是一个大字典,然后把类中得名字都丢到类的名称空间去
3. 把类的名称空间绑定给 类名.__dict__中
如何查看类的名称空间?
print(Student.__dict__)
如何产生对象?
调用类产生对象
stu = Student()
print(stu)
如何查看对象的名称空间
print(stu.__dict__) # {} 默认情况下调用类会得到一个空对象,其实就是一个空字典
——————————————————————————————————————————————————定制对象自己独有的属性
默认情况下,调用类产生一个对象,它是一个空对象,没有任何的数据
因此,我们需要给每一个对象添加数据
__init__()
方法,在创建一个对象时默认被调用,类似Java中构造器。不需要手动调用__init__(self)
中,默认有1个参数名字为self,必须写。如果在创建对象时传递了2个实参,那么__init__(self)
中出了self作为第一个形参外还需要2个形参,例如__init__(self,age,name).第一个self不需要手动传参。
__init__(self)
中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去
python中一个类中只能有一个__init__方法,不支持该方法的重载
——————————————————————————————————————————————————属性的查找顺序
1. 显示类属性的查找
class Student():
school = 'SH'
stu = Student()
1. 类属性的查找
查
print(Student.__dict__['school'])
print(Student.school)
增加
Student.x = 'xxx'
Student.z = 666
print(Student.__dict__)
改
Student.school = 'BJ'
print(Student.__dict__)
删除
del Student.school
print(Student.__dict__)
2. 对象自己的属性查找
对象的增删改查
stu = Student('kevin', 19, 'male')
1. 查
print(stu.name)
print(stu.age)
print(stu.gender)
# print(stu.x)
print(stu.school) # SH
如果你使用的是点语法,那么,对象查找属性的时候,先从对象自己的名称空间中查找,如果找不到,就去产生这个对象的类中查找
------------如果你使用的__dict__取值,只能够取到对象自己名称空间中得属性,不会去类中查找------------
print(stu.__dict__['school']) # SH
如果你使用的是点语法,那么,对象查找属性的时候,先从对象自己的名称空间中查找,如果找不到,就去产生这个对象的类中查找
print(stu.__dict__)
增加
stu.x = 666
stu1.x = 999
改
stu.x = 888
删除
del stu.x
del stu.school
print(stu.__dict__)
标签:__,对象,stu,dict,python28days,Student,print From: https://www.cnblogs.com/wzh366/p/17747285.html