day15-类和对象
1.面向对象编程
编程思想
程序员在面对问题的时候,采用的解决方式就决定编程思想
a. 面向过程编程
在解决问题的过程中,通过思考解决问题的步骤来进行编程(逻辑和算法)
b.函数式编程
在解决问题的过程中,通过调用函数(寻找解决问题的办法)来进行编程(逻辑、算法和函数)
c.面向对象编程
在解决问题的过程中,通过创建类和对象来进行编程
2.类和对象
1.什么是类、什么是对象
类:拥有相同功能和相同属性的对象的集合(抽象概念)
对象:类的实例
比如人类,动物都是类,具体到某一个人就是人或者动物的对象。
2.定义类(创建类)
用代码来描述清楚你要创建的这个类是拥有哪些相同功能和哪些相同属性的对象的集合
语法:
class 类名:
类的说明文档
类的内容
说明:
class - 关键字,固定写法
类名 - 由程序员自己命名,
要求:是标识符;不能是关键字
规范:见名知义;不使用系统函数名、类名和模块名;首字母大写,采 用驼峰式命名
类的说明文档:本质就是多行注释
类的内容:描述这个类共同的功能(函数 - 方法)和属性(变量 - 属性)
3.创建对象
语法:
对象=类名()
创建指定类的对象并且返回
3.方法
定义在类中的函数就是方法,它是用来描述类的对象拥有的共同的功能
类中的方法有三种:对象方法,类方法,静态方法
1.对象方法
a.怎么定义
直接定义在类中的函数就是对象方法
b.怎么调用
以’对象.xxx()'的方式来调用(通过对象来调用)
c.特点
通过对象调用对象方法的时候,默认参数self不需要传参,系统会自动将当前对象传给self(self是谁调用就指向谁)
2.类方法
a.怎么定义
定义函数前加装饰器@classmethod
b.怎么调用
以’类名.xxx()'的方式来调用(通过类来调用)
c.特点
通过对象调用对象方法的时候,默认参数cls不需要传参,系统会自动将当前对象传给cls(cls指向当前类)
3.静态方法
a.怎么定义
直接定义在类中的函数就是对象方法
b.怎么调用
以’类名.xxx()'的方式来调用(通过类来调用)
class A:
def func1(self):
print('这是一个对象方法')
@classmethod
def func2(cls):
print('这是一个类方法')
@staticmethod
def fun3():
print('这是一个静态方法')
a1 = A()
a1.func1()
A.func2()
A.fun3()
4.属性
定义在类中的变量就是属性
类中的属性有两种:对象属性、类属性
1.类属性
a.怎么定义:直接定义在类中的变量
b.怎么使用:以’类.属性名’方式来使用
c.什么时候用:属性值不会因为对象不同而不一样就定义成类属性
2.对象属性
a.怎么定义:以’self.属性名 = 值’的方式定义在 init方法中
b.怎么使用:以’对象.属性名’方式来使用
c.什么时候用:属性值会因为对象不同而不一样就定义成对象属性
补充: 魔法方法 - 类自带的方法中,名字以__开头和结尾的方法就是魔法方法,例如:
init- 创建类的对象的时候会被自动调用
repe 调用类的对象的时候会被自动调用