面向对象

目录

面向对象编程

面向对象 : 一门编程思想(上帝是的思维方式)

面向对象 : 对象 --特征 与技能 的结合体

优点: 可扩展性强

缺点: 编程的复杂要高于面向过程

面向过程: 机械式的思维方式

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

缺点: 可扩展性差

类: 一系列对象相似的特征与技能的集合体

python 程序中: 先定义类,调用类来产生对象

#注意:类中定义变量使用驼峰体
class OldboyStudent(object):
    school = 'oldboy' *--特征
    def choose_course(self): *--技能
        print('is choosing course')
        

定义函数阶段,只检测语法,不执行代码。

定义类阶段,类体代码会在定义阶段就立刻执行,并产生一个类的名称空间。即类的本身其实就是一个容器/名称空间,用来存放名字

print(oldboyStudent.__dict__)

#打印类体内的所有名称空间,并以字典的形式展示

print(oldStudent.__dict__['school'])

对象: 调用类即可产生对象,调用类的过程,称为类的实列化,实力化的结果称为类的对象/实列

stu1 = oldStudent()
print(stu1.school)

定制对象独有特征:

对象本质似于类,也是一个名称空间,但是对象的名称空间存放对象独有的名字,而类中存放的是对象共有的名字。

属性查找:

从对象本身查找,没有则往类中找,类中没有则会报错。

class oldboyStudent():
    school = 'oldboy'
    def __init__(self,name,age,gender):
    '''调用类生成对象自动触发'''
        self.name = name
        self.age = age
        self.gender = gener
        print('*' * 50)
    def choose_course(self):
        print('is choosing course')
        
        
try:
    stu1 = oldboyStudent()
except Exception as e:
    print(e)
    

调用类发生的事件:

1.创造一个空的对象

2.自动触发类中__init__功能的执行,将对象及类括号内的参数一同传入。

对象的绑定方法:

1.类名称空间中定义的数据属性和函数属性都是共享个所有对象用的。

2.对象名称控件中定义的只有数据属性,而且是对象所独有的数据类型

类中定义的函数是类的函数属性,类可以使用,但使用的就是一个普通的函数而已,意味着需要完全遵循函数的参数规则,该传几个值就传几个

  • 类中定义的函数是共享给所有对象的,对象也可以使用,而且是绑定给对象用的,

  • 绑定的效果:绑定给谁,就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入

补充:类中定义的函数,类确实可以使用,但其实类定义的函数大多情况下都是绑定给对象用的,所以在类中定义的函数都应该自带一个参数self

class OldboyStent:
    school = 'oldboy'
    def __init__(self,name,age,gender):
        self.name = name
        self.age = sge
        self.gender = gender
        
    def choose_course(self):
        print(f'{self.name} choosing course)
    def func(self):
              peint('from func')

python3 中统一了类和类型的概念,类就是类型。

#list.append() 方法原理

class oldboyStender:
    school = ' oldboy'
    def __init__(self,name,age,gender):
        self.name = name
        self.age = age
        self.sex = gender
    def choose_course(self,name):
        print(f'{name}choosing course')
stu1 = oldboyStender('nick',18,'male')
  • 对象其实就是一个高度整合的产物,整合数据与专门操作该数据的方法(绑定方法)

原文地址:https://www.cnblogs.com/shaozheng/p/11642205.html