day24
类的属性与对象的属性
类中应该仅存储所有对象共有的内容
--如所有人的国籍相同那就放到类中
对象中存储每个对象的独有内容
--如每个人的名字都不相同
__init__(self)方法的作用
init是初始化的缩写,用于为对象的属性设置初始值
--当我们通过类生成一个对象时,其实是通过类点出init方法,并且把对象作为参数传进去
特点:
# 1、执行时机:当实例化产生对象时会自定执行该函数
# 2、当对象产生时会自动把对象当作参数传进去(自动传入需要初始化的对象)
# 3、初始化必须包含至少一个参数,用于表示对象本身
# 4、该函数不允许有返回值,必须为None
绑定方法
定义:
方法即为函数,绑定方法就是把什么东西和方法一起绑定起来
--默认定义在类中的方法,都是绑定方法
优点:
直接将需要处理的数据以及处理数据的方法绑定在一起,这样一来获得一个对象的同时,
就同时获得了 数据 以及 相应的处理方法,简单调用即可
绑定方法与普通函数的区别
绑定方法的分为两种:
1、绑定方法
--1.1、对象绑定方法
在使用对象调用时,会自动传入对象本身
当使用类调用时,就是一个普通函数,不会自动传参,需要几个参数就要传几个
--1.2、类绑定方法 @classmethod
在使用对象调用时会自动传入类本身
在使用类来调用时也会自动传入类本身
--单例模式(一个类只有一个实例)中就会经常使用@classmethod
2、非绑定方法(静态方法) @staticmethod
--既不需要对象中的数据,也不需要类中的数据,那就定义为非绑定方法,就是普通函数
##注:在使用面向对象编程时,首先要想的是需要什么对象,这些对象具备什么样的属性和什么样的行为
根据属性和行为创建对应的类
继承
继承指的是一种关系:例如儿子继承老爸财产,被继承一方(老爸)称之为父,继承一方称之为子
在OOP中,继承描述的是类和类之间的关系
例如b类继承a类,b类可以直接使用a类中的属性和方法
a是父类(基类、超类) b是子类(派生类)
好处:极大的提高了代码的复用性
语法:(想要使用继承,至少需要两个类)
class 子类名称(父类名称):
pass
--这样子类就可以使用父类里面的所有属性和行为
抽象与继承
继承之后可以直接使用父类的属性和方法
在使用继承时,应该先抽象再继承
抽象指的时将一系列类中相同的特征和相同的行为抽取形成一个新的类,作为这一列类的父类
在python3中任何类都直接或间接继承自object
object是所有类的基类(根类)
所以object类中提供的一系列方法,都可以被其他类直接拿来使用
一切皆对象
一切皆对象指的是 在python中使用到的任何数据都是对象 int float list dict 模块 包 函数 都是
属性查找顺序
对象自己 --> 所在的类 --> 所在类的父类 --> 父类的父类 -->....-->object类
派生与覆盖
# 派生
子类拥有与父类不同的内容,就称之为派生
# 覆盖
指的是子类出现了与父类完全相同名称的属性和方法,根据查找顺序,就会优先查找子类的,即覆盖了父类的内容
在子类中访问父类已有的方法或属性
# 1、可以通过指名道姓点出来
在子类中直接用父类名称点出功能 (即使不是父类也同样可以点出来)
# 2、super() --只有在py3中可以
在子类中直接使用super()也可点直接点出来父类中的方法或属性
# 3、super(子类,self) --py2和py3都可以使用
在子类中使用super(子类,self)也可以点出来父类中的方法或者属性