10.22语法 class 类 面向对象概念 类与对象 对象的使用 绑定方法
1.语法 class 类
类命名规范 大写开头 驼峰体
如 class Xxxx:
a=‘a’
b=‘b’
def say_hi(self):
print(self)
print('hello')
在定义阶段(只要包含该类的py文件被执行 就会做两件事)
1.创建类的名称空间
2.执行代码 将产生的名称放入名称空间
使用类中的属性
Xxxx.a
Xxxx.b
使用类中的函数
Xxxx.say_hi 使用类直接调用类中的函数时与普通函数没有什么区别 self仅仅是一个参数
2.面向对象概念
也是一种编程思想
核心是对象
什么是对象:再现实生活中实实在在存在的,具备自己的特征和行为的事物
反过来说 对象就是 特征和行为(技能)的结合体
如何来区分:如果能够准确的找到一个事物,它就是一个对象
面向对象编程:我们关注的点是.使用什么样的对象可以完成我的任务
例如:把大象装进冰箱,什么样的对象可以帮我完成这个任务,只要找到这个对象,命令它来做事情即可
你从一个操作者 变成了指挥者, 例如:西游记中的如来,他要完成一个传经,要把经书传到东土大唐取,
本来要自己去,但是太麻烦,所以找了唐僧师徒五个对象,来帮他完成这个任务
优势: 1.对于指挥者(程序员)来说,不需要再关心具体步骤
2.扩展性,一个单独的个体的特征或行为发生变化时 不会影响到别人
缺点: 1.程序的复杂度变高,你得需要设计这个些对象,注意要避免过度设计得问题
2.程序得执行结果可控性低
3.类与对象
类就是分类 类型的意思
定义:一堆具备相同特征和行为的事物的抽象概念,不实际存在
先有类还是先有对象:
生活中:
生活中类怎么来的,是通过对象的特征和行为抽取而来,
所以是先有对象才有了类
编程中:
必须是先有类 才能有对象,因为你必须先告诉程序,你这个对象有什么样的特征和行为
类的作用:用于描述该类的对象具备什么样的特征和行为
4.对象的使用 对象 与类的名称空间是独立的
创建对象:在类名后加括号
访问对象的属性print(Xxxx.a)
修改属性的值:Xxxx.a='b' 为对象的属性赋予新的值 类中的属性不会变化
增加属性
Xxxx.c='c' 为对象增加属性 类中也不会出现新的属性
删除属性
def Xxxx.c
如果对象的属性是相同的 就放到类中 作为一个公共的数据
对象的属性查找顺序
对象自己的名称空间 -> 类的名称空间
__init__ 称之为初始化函数 在创建对象的时候自动执行
创建对象时,创建一个空对象,执行函数时__init__并且自动传入了这个对象
该函数的作用,就是为对象的属性赋初始值
def __init__(self,name,color,age,gender):
print("狗__init__执行了")
print(self)
self.name = name
self.age = age
self.color = color
self.gender = gender
#1. 使用场景 需要为每个对象定制不同的属性值
#2.__init__在创建对象后自动执行
#3.第一个self参数 指的是这个对象本身 不需要手动传值
5.绑定方法
# 类调用与对象调用的区别
# 对于类而言 sleep就是一个普通函数
# 对对象而言 sleep是一个绑定方法
# 绑定方法是什么?
# 是对象与类中的某个函数的绑定关系 就像生活中 我们都会吃饭 我吃饭你不会饱
# 那么吃饭就是我自己的绑定方法
# 为什么要把函数进行绑定?
# 因为对象的行为 通常都需要访问这个对象的数据 或是修改这个对象的数据
# 如果没有对象 直接调用函数是没有意义的 在函数中访问不到对象的数据
# 所以将对象和函数进行绑定
# 特殊之处
# 在使用绑定方法时 不需要关心self参数 会自动将这个对象本身传进来
# 对象调用绑定方法时 最后执行的还是类中的那个函数