一,面向对象
在编程的思想中可以大致分为两种思想:
1.面对过程编程思想:
面向过程编程就好比把整个需求的每个过程具体化,流程化。其中优缺点是可见分明的:
优点:可以将复杂的逻辑,经过每个过程后,变的简单明了化。
缺点:可拓展性,维护性等都非常的差。
使用场景一般都是在不经常变动的程序里,比如电脑的操作系统,计算器。
2.面向对象编程思想:
面向对象编程,说白了就是在对象的基础上来完成需求。换句话说就是可以站在上帝视角来编程,你需要什么对象,就可以创造什么样的对象。让对象与对象之间相互解决。从简单的操作者变成了指挥者。
优点:拓展性,维护性强,是具有灵活性,可重性的。
缺点:使得程序更加的复杂化,不可预知性。
使用场景一般是 拓展性强的项目中。
总结:根据不同场景结合不同的编程思想。促进编程效率。在面向对象中,函数称为函数属性,把变量称为数据属性
二,类和对象
1.什么是对象?
对象就是单个存在的事物,并且具有自己特征与行为。也就是特征和相关行为的一个结合体
2.什么是类?
类其实是人们来抽象定义的一个概念,把有相同行为和相同特征的事物放在一起,并称之为某种类。
3.类与对象的关系
在现实世界中,是先有对象,再有类的。
而在程序中,你必须先定义一个类来告诉计算机这个对象的特征与行为。
三,创建类和对象
定义类的语法:
class 类的名称: #类中描述属性和技能 #描述属性用变量 #描述行为用函数 #类名称也要做到见名知意,并且使用驼峰体
定义对象的语法:
class Person: pass p = Person() #创建对象
属性的写法:
当属性写在类中时,这个属性是全部对象的公共属性。
当属性写在对象里时,那么这个属性是这个对象的特有属性。
如果类和对象存在同样的属性,那么首先会找对象里是否有该属性,如果没有,再去类中找。
class Teacher:
school = 'oldboy' #公用属性 t1 = Teacher() t1.name = 'tanke' #独特属性 t1.age = 18
属性的增删改查
增加属性 对象变量名称.属性名称 = 属性值 删除属性 del 对象的变量名称.属性名称 修改 对象.属性 = 新的值 查看属性 访问的是对象的所有属性 print(对象.__dict__) 访问对象的类信息 print(对象.__class__)
四,__init__方法
双下 init 叫做初始化,它的本质上是个函数
特点:
1.当实例化对象的时候,会自动执行初始化方法。
2.会自动将对象作为第一个参数传入,参数名称为self. 不建议更改参数名
功能:用户给对象赋初始值
class Dog: def __init__(self,name,age) self.name = name self.age = age t = Dog('泰迪',2) t1 =Dog('哈士奇',1) #创建对象
这个函数不能有返回值
对象的精髓就是将数据和处理数据的函数结合在一起。
那么拿到一个对象就是拿到了一个处理的数据和一个处理数据的函数。
五,对象的绑定方法
在类的方法中,默认的都是对象绑定法。
当使用对象调用该函数时,会自动传入对象自己作为第一个参数
当使用类名来调用该函数时,该函数就是个普通函数,有几个参数就要传几个参数
class Student: def __init__(self,name): self.name = name def say_hi(self):# self就是对象,绑定在该函数里 print("hello my name is %s" % self.name)
六,类绑定方法
类绑定方法是用 @classmethod 来装饰的。
特点:不管是用类调用还是对象调用,都会自动传入类本身作为第一个参数
当函数逻辑需要访问对象中的数据时就绑定给对象
当函数逻辑需要访问到类中的数据时,就绑定给类
七,非绑定方法
@staticmethod 也叫静态方法,既不访问对象的数据也不访问类的数据