首页 > 编程语言 >python28days

python28days

时间:2023-10-07 19:33:07浏览次数:36  
标签:__ 对象 stu dict python28days Student print

面向过程编程

面向对象编程

类的定义和对象的产生

定制对象自己独有的属性

属性的查找顺序(类属性,对象属性)

—————————————————————————————————————————————————————————————在编程中,面向过程和面向对象是编程的两大编程思想,分别是:面向过程和面向对象

什么是面向过程

面向过程中核心是过程 就是机械式的思维方式
案例:洗衣机的工作过程

优点:复杂的问题简单化、进而流程化
缺点:扩展性差,牵一发而动全身
应用场景: 一般用在对扩展性要求比较差的情况

使用面向过程写一个注册的案例来体会面向过程的优缺点、
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

相关文章