面向对象
1. 概念
**类(Class)**用来描述具有相同属性和方法的对象集合。它定义了该集合每个对象共有的属性和方法。对象则是类的实例
类变量 类变量在整个实例化对象中是公用的。类变量定义在类中但是在函数体外。类变量通常不作为实例变量使用。
数据成员 类变量或者实例变量用于处理类及实例对象的相关数据
方法 类定义的函数
实例变量 定义在方法中的变量,只作用于当前实例的类
继承 一个派生类(derived class)继承基类(base class)的字段和方法。
方法重写 如果父类的继承的方法不能满足子类的需求,可以对其改写,这个过程的覆盖,叫做方法重写(override)
实例化 创建类的实例,类的具体对象
2. 命名方式
大驼峰 首字母大写OnlineStuInfo
见名知意
区分大小写
3. 类定义
""" wife 属性: sex,age,height,weight,name,facevalue 行为: 洗衣服,做饭,生小孩 husband 属性: sex,age,height,weight,name,handsome 行为: 吃饭,照顾小孩(奶爸),赚钱 """ class Wife(object): # female 女性 sex = "female" age = 19 height = 168 name = "苍苍" faceValue = "9.8" def washClothes(self): print("洗衣服") # wash clothes def cook(self): print("做饭") # cook def makeChild(self): print("生娃") bdqb = Wife() print(bdqb.name) print(bdqb.makeChild())
4. self代表类的实例,而非类
类里面的方法,都会有一个必须存在参数self,这个self参数不是python的关键字,我们可以把它替换成任意参数名
class SelfSpecialPage(object): def prt(modeng): print(modeng.__class__) sss = SelfSpecialPage() sss.prt()
5. 属性和方法
对象.属性名 对象.方法名(参数...) 返回方法里数值的关键字 return
注意: (方法里)return下方代码就不在执行了,遇到return就默认结束了
6. 对象属性和类的属性
使用对象创建的属性,只有当前对象存在该属性,称为对象属性
使用类创建的属性,在每个对象里都会存在,称为类属性
当在对象里去修改类属性值的时候,相当于在当前对象里新创建一个对象属性,当调用的时候优先调用对象的属性,但是类本身的值,不会改变
对象的属性由于类的属性
实例的属性优先于类的属性
class Person(object): name = "person" def __init__(self,name,age,wq): self.name = name # 调用类的属性 print(Person.name) person_1 = Person("DD") # 实例的属性优先于类的属性 print(person_1.name) person_1.age = 22 print(person_1.age) # 对象临时添加的属性,只对当前对象起作用,其它的都免提 # 已经删除了对象的名字 del person_1.name print(person_1.name)
注意: 避免对象属性和类属性重名, 因为对象属性会屏蔽掉类属性,如果删除对象属性,会继续使用类属性
7. 实例绑定属性两种方式
一种通过self变量,构造函数 person_1 = Person(“MD”)
一种直接赋值 person_1.age = 22
- ATM取款
raise 主动抛出一个信息
子类可以继承或者扩展方法,但是父类不能调用子类的方法,这好像是向上转型