Python语言基础之——面向对象编程

1.类属性

1)类属性:
直接定义在类中的变量是类属性
类属性的值不会因为对象不同而不一样
2)对象属性
通过 self.属性名 = 值 定义在init函数中的属性
对象属性的值会因为对象不同而不一样

2.对象属性的增删改查

1.查
对象.属性 - 获取对象中指定属性对应的值,属性不存在会报错
getattr(对象, 属性名) - 获取对象指定属性对应的值,属性不存在会报错
getattr(对象, 属性名, 默认值) - 获取对象指定属性对应的值,属性不存在不会报错,返回默认值
2.改、增
对象.属性 = 值 - 当属性不存在就给对象添加属性,属性存在的时候就修改属性的值
setattr(对象, 属性, 值)
3.删
del 对象.属性 - 删除对象中指定的属性
delattr(对象, 属性名) - 删除对象中指定的属性

3.内置属性

1.module
类属性:
类.module - 获取定义类的模块的模块名
2.class
对象.class - 获取对象对应的类
3.name
类.name - 获取类名
4.dict
类.dict - 将类转换成字典(类属性名作为key,类属性的值作为值 )
对象.dict - 将对象转换成字典(对象属性名作为key,属性的值作为值)
5.doc
类.doc - 获取类的说明文档
6.base bases
类.base
获取当前类的父类
bases - 获取当前类所有的父类
7.slots
约束当前元素的数量,如果给类属性slots赋值了,最后结果不再是字典,导致不能使用dict

4.私有化

访问权限(针对属性和方法)
公开的:在类的内部和外部都可以使用,也能被继承
保护的:在类的内部可以使用,在类的外部不能使用,但是可以被继承
私有的:只能在类的内部使用,不能被继承

严格来说,Python中所有的属性和方法都是公开的,这说的私有化其实是假的私有化

5.getter和setter

1.getter和setter的作用
getter - 获取某个属性之前想做别的事情,就给这个属性添加getter
setter - 在给属性赋值之前想要做别的事情,就给这个属性添加setter
getter和setter 的添加方法:
1)getter
第一步:在需要添加getter的属性名前加下划线
第二步:定义getter对应的函数() 需要@property装饰器 函数名就是不带下划线的属性名 函数需要一个返回值
获取属性值的通过:对象.不带的属性名 本质就是在调用getter对应的函数,取到的属性值就是函数的返回值
2)setter
如果想要给属性添加setter,必须先给属性添加getter
第一步:添加getter
第二步:定义setter对应的函数 需要@getter函数名.setter装饰器 函数名就是不带
的属性名 需要一个参数,不需要返回值,这个参数就是尝试给属性赋的值
第三步:给属性赋值:对象.不带下划线的属性名 = 值 本质就是在调用setter对应的函数

你可能感兴趣的:(Python语言基础之——面向对象编程)