面向对象编程
面向过程编程与面向对象编程的区别:
面向过程编程使复杂的问题简单化,流水线操作
优点:复杂的问题简单化
能准确预知结果
缺点:可拓展性差,灵活性差,重用性差
面向对象编程,让对象去解决问题
优点:可拓展性好
灵活性好
重用性好
缺点:程序复杂程度提高
无法准确预知结果
类和对象
类和对象: 类:就是一系列具有相同特征,行为相同的对象集合体 对象:具体存在的某个事物,具有自己独特的特征和行为 类和对象的关系: 类包含一系列对象 对象属于类 在程序中先有类再有对象 创建类的语法 class 类名: # class为关键字 # 类中的内容 描述类的功能和属性 # 描述属性用变量 # 描述功能用函数 创建对象的语法 class Person: pass # 创建对象 p = Person() 描述属性的写法: 属性可以写在类中 类中的属性,是所有对象公共的 也可以写在对象中 对象中的属性,是每个对象独特的(不一样的) 如果类中和对象中存在同样的属性,先访问对象 如果没有在访问类 练习: 描述一个老师类 需要包含 一个公共属性和 一个独特的属性 class Teacher: school = "oldboy" t1 = Teacher() t1.name = "jack" t1.age = 28
属性的增删改查
增加属性 对象变量名称.属性名称 = 属性值 删除属性 del 对象的变量名称.属性名称 修改 对象.属性 = 新的值 查看属性 访问的是对象的所有属性 print(对象.__dict__) 访问对象的类信息 print(对象.__class__)
init方法
叫做初始化方法,本质上就是一个函数 特点1: 当实例化 对象时,会自动执行init方法 特点2:会自动将对象作为第一个参数传入,参数名称位self ,self可以是别的名字,但不建议改 功能:用户给对象赋初始值 class Dog: def __init__(self,kind,color,age): self.kind = kind self.color = color self.age = age d1 = Dog("二哈","黑白",1) d1 = Dog("泰迪","棕色",2) 注意:该函数不能有任何返回值/.... 只能是None 规定如此..
绑定方法
## 对象的绑定方法 默认情况下类中的方法都是对象绑定方法 其特殊之处在于, 当使用对象调用该函数时会自动传入对象本身,作为第一个参数 当使用类名来调用时他就是一个普通函数,有几个参数就得传几个参数 class Student: def __init__(self,name): self.name = name def say_hi(self): print("hello my name is %s" % self.name) ## 类绑定方法 类绑定方法用@classmethod来装饰 特殊之处:不管用类还是对象调用,都会自动传入类本身,作为第一个参数 什么时候绑定给对象:当函数逻辑需要访问对象中的数据时 什么时候绑定给类:当函数逻辑需要访问类中的数据时 # 非绑定方法 或叫做静态方法,就是即不需访问类的数据,.也不需要访问对象的数据 语法:@staticmethod 不常用