面向对象
一 概念
(1)类的概念(class):用来描述具有相同属性和方法的集合
(2)属性:就是一个变量名
二 类的定义
class 类名:
- 1
- 2
- 3
- 4
类名:
- 大驼峰命名法 首字母大写
- 见名知意
- 区分大小写
三 类的实例化
对象名 = 类名([参数一…])
类的实例化 称为对象
四 属性和方法名的调用
对象名.属性名
对象名.方法名()
类方法的参数
类里面的方法 都会有一个必须存在的参数 self 这个self的参数 不需要传参的 它是代表 当前实例化后的对象
方法的参数 其实就是形参
在类实例化后的对象 调用类里面的方法的时候 如果有形参(self以外的) 就需要去传 实参(跟函数的调用一样)
五 方法的返回值 return
方法里 如果 没有返回值 打印方法的时候 返回 None
如果有返回值得 方法 需要使用 print() 将其输出
- 1
- 2
- 3
- 4
面向对象二
一 对象属性 类 属性
-
使用类创建的属性 在每个对象里 都会存在 称为类属性
-
使用对象 创建的属性 只有当前对象存在该属性 称为对象属性
3.创建对象属性 的 俩种方法
在python中self就相当于this指针 self可以改为任意值 但是要保证是传递当前对象的
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
4.当在对象里 去修改 类属性的时候 相当于在当前的对象里 创建了一个对象属性 当调用的时候 会优先调用对象属性 而类属性本身的值 不会发生改变
注意: 以后千万不要将对象属性 和类属性重名 因为对象属性 会屏蔽掉 类属性 当删除对象属性以后 才又能够去使用类属性
5.类的属性 不能够 使用 对象属性去删除
6.类属性的创建
- 1
- 2
-
类和对象属性的操作
hasattr(obj,”属性名”) #判断是否有该属性
setattr(obj,”属性名”,”属性值”) #设置该属性
getattr(obj,”属性名”) #获取属性的值
getattr(obj,”属性名”,状态码) #当该属性不存在的时候 会返回 你的状态码
二 slots 限制 class 实例能添加的属性
slots 限制 class 实例能添加的属性
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
三 给对象绑定方法
(1)使用 MethodType函数 来进行绑定
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
(2) 给所有实例都绑定方法
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
四 私有属性和私有方法
(1) 私有属性
__private.attrs:俩个下划线作为开头 声明属性为私有 不能在类的外部使用 或直接访问
在类的内部 使用 self.__private.attrs去调用
私有属性的访问:
- 1
- 2
你可以通过 类名_属性名的方式 来访问 私有属性
注意:
- 1
- 2
(2)私有方法
_private.func
私有方法访问,声明方法为私有方法 不能在类的外部使用 或直接访问
注意:私有属性 或者方法 饭都不能被继承
五 装饰器 @property
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
六继承
在oop程序设计中 当我们定义一个class的时候 可以从现有的类 进行继承 新的类称为子类 而被继承的类成为基类 也叫做父类 活着超类
(1)单一继承
class类名(父类类名):
子类会拥有父类的全部属性或方法私有的以外
所有的类 都会继承object类
(2)多继承
class 类名(父类1,父类2…..);
pass
注意;
- 1
- 2
七父类方法的调用
(1)父类的类名。属性名/方法名 覆盖的情况下
(2)super().方法名【【推荐使用的一种】
(3)super(类名.self)