面向对象

面向对象

什么是面向对象:

面向对象是一门编程思想

面向过程思想

核心是“过程”二字,过程指的是解决问题的步骤,先做什么再做什么

基于该编程思想编写程序,如流水线,一种机械式的思维

优点:

将复杂的问题流程化,进而简单化

缺点:

牵一发而动全身,程序的可扩展性差

如:面向过程的编程思想就是函数的使用,这句话不对

ps: 编程思想是一门思想,与任何的技术无关

面向对象的编程思想:

注意:

核心是“对象二字”,对象指的是“特征与技能”的结合体

基于该编程思想编写程序,要有一种“上帝式”的思维方式

优点:

可扩展性高

缺点:

编写程序的复杂程度比面向过程高

如何产生对象:

1)什么是类:

类指的是类型,类别

用两种角度去看待:

​ 现实社会种:

​ 先有一个个的对象,经过社会的文明发展,随之总结出类

​ 在程序中:

​ 必须先有类,再通过“调用类,产生对象”

对象指的是“特征与技能”的结合体,类指的是一系列“对象之间相同的特征与技能”的结合体
对象是实际存在的,而类抽象产生的

2)如何定义类:

如何写类并产生对象:

先从现实世界中通果一个个对象总结出类

然后再定义类,后调用类产生对象

3)定义类语法:

class 关键字:帮你产生类的

class类的名字:

​ 对象之间相同的特征

​ 对象之间相同的技能

定义类名的规范:

​ 驼峰命名法

class Student:
    # 类名指向的是类的内存地址
    school = 'oldboy'  # 类中特征也称之为‘属性’ attribute

    def func(self):  # 在类内部定义函数,会默认有一个参数self 此时可以当作形参
        print('1111')


# 查看类的名称空间
print(Student)
print(Student.__dict__['func'](1))
print(Student.__dict__['school'])
print(Student.__dict__)

# 类还提供了一种特殊获取名字的方式”类名.名字“的方式
# 可以增删改查

函数的名称空间:

​ 在调用函数时产生,函数调用结束后销毁

类的名称空间:

​ 在定义阶段时产生,会将类中所有的名字,扔进类的名称空间中

对象的产生:

调用类即产生对象

类名+()调用类产生对象

类的名称空间在定义时产生,对象的名称空间在调用类时产生

调用类产生对象的过程成为类的实例化,对象则成为类的实例

对象调用方法时:会将对象作为第一个参数传入方法中

由对象来调用类内部的函数,称之为对象的绑定方法

​ 绑定方法的特别之处:会将对象当做第一个参数传给该方法

给对象添加新的属性:

def__init__(self,name,sex,age):
    self.name = name
    self.sex = sex
    self.age = age
    

想要在调用类时,为对象传入独有的特征

调用类时:会将对象当作第一个参数,与括号内所有的参数一并传给__ init __()

stu1 = Student('tank','male',17)
name -->tank , sex-->male, age--17

ps: 凡是在类内部定义的,__ 开头或者 __结尾的方法都有特殊的意义

在类内部定义的方法,在调用类时触发,会自动将对象本身当做第一个参数自动传入,与括号内所有的参数一并传给__ init __()

对象名字的查找顺序:

1.对象.属性,会先找对象自己的。

2.若对象没有,会去找类的。

3.若类没有,则会报错。

总结

调用类产生对象发生的事情:

1.会产生一个空对象的名称空间

2.会自动触发__ init __,并且会将对象当作第一个参数传入

3.会将调用类括号内的参数一并传给__ init __()

类中的方法是给函数对象使用的

对象绑定方法的特殊之处是:

1.会将对象当作第一个参数传入

2.若对象的绑定方法还有其他参数,会一并传入

原文地址:https://www.cnblogs.com/godlover/p/11928250.html