学习Python的第22天

面向过程编程和面向对象编程

1.面向过程编程

1.1定义

在编程中分为两大编程思想,分别是面向过程编程和面向对象编程。其中面向过程编程主要是在意的是过程:先干什么——再干什么——最后干什么的机械思维。主要应用再一般用于在对扩展性要求比较差的情况下。

1.2优缺点

优点:复杂的问题简单化,进而流程化。

缺点:可塑性差,动一行代码就要复查全部代码。

2.面向对象编程

2.1定义

面向对象编程他是一种编程思维,他的核心主要是搞懂你要面对的是什么对象,需要对人下药。

2.2优缺点

优点:可塑性强

缺点:会把简单的东西复杂化

3.类的定义和对象的产生

3.1对象

是技能和他的特征的结合体。

3.2定义

他是一系列相似的特征的结合体。在程序中是先有类,在调用类然后再产出对象。

3.3专用语法

###类的定义
 def index():
      pass

 class Student():
      pass
###函数中的括号一定不能省略

1.使用关键字class要声名

2.class后面写的是类名,类名的命名:一般情况下要遵循变量名的命名,类名一般情况下首字母是要大写的。

3.如果命名比较长可以使用驼峰法但是要使用大驼峰。

4.类名后面的小括号不能省略。

###只是定义类
class Student():
    school = 'SH'  # 类属性,其实就是变量吗?

    def choose_course(stu_dict, course):
        stu_dict['courses'].append(course)
        print("%s选课成功:%s" % (stu_dict['name'], stu_dict['courses']))

    print(123)


1. 类一旦定义完成,会立马执行类体代码

2. 会产生类的名称空间,其实就是一个大字典,然后把类中得名字都丢到类的名称空间去

3. 把类的名称空间绑定给 类名.__dict__中4.

3.4.如何查看类的名称空间,产生对象,调用类产生对象,产看对象名称空间

print(Student.__dict__)
stu = Student()
print(stu)
print(stu.__dict__) 

4.定制对象自己独有的属性 

4.1定义

默认的情况下,调用类产生一个对象,它一个对空对象,没有任何的数据,因此我们需要每一个对象添加数据库。

class Student():
    school = 'SH'  # 类属性,其实就是变量吗?

    """它有特殊的含义, 在类里面必须叫__init__,然后调用类的时候才会自动触发执行"""

    ## 类里面一定要有这个方法吗? 不一定,也就是说,你如果需要提前定制对象的属性,你就写这个方法, 如果不需要,就不用写
    def __init__(self, name, age, gender, course=None):
        if course is None:
            course = []
        self.name = name  # stu.__dict__['name'] = 'kevin'
        self.age = age  # stu.__dict__['age'] = 18
        self.gender = gender  # stu.__dict__['gender'] = 'male'
        self.courses = course  # stu.__dict__['courses'] = []
   
    ## 函数写在类里面就称为是方法
    def choose_course(stu_dict, course):
        stu_dict['courses'].append(course)
        print("%s选课成功:%s" % (stu_dict['name'], stu_dict['courses']))

### 版本2
"""在调用类的时候,会自定调用类里面的__init__方法"""

"""调用类的时候有特殊的功能,它会把对象自己当成第一个参数传给__init__方法"""
# stu = Student('kevin', 19, 'male') # stu = Student(stu, 'kevin', 19, 'male')
# # stu1 = Student()
#
# stu1 = Student('jerry', 20, 'female')

5. 属性的查找顺序

5.1定义

有类属性和对象自己的属性

5.2操作方法

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__)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值