一、内置类属性
内置属性 | 功能 |
---|---|
__ name __ | 获取类的名字 |
__ doc__ | 获取类的说明文档 |
__ dict __ | 获取类属性和其对应的值(键值对形式) |
__ module__ | 获取当前类所在的模块名 |
__ bases__ | 获取当前类的父类 |
二、私有化
-
私有化方法:
直接在属性名或者方法名前加两个下划线(__属性名)
-
私有功能
在外部不能使用,可以在类的内部使用
-
属性假私有化
声明属性的时候,在属性名前加一个 ‘ _ ’ ,来告诉他人这个属性是不可以直接使用的。要通过 getter 和 setter 来获取和修改属性的值
-
getter & setter
1. getter
通过 getter 获取值:
@property def 属性名(去掉下划线)(self): return 返回值
如果在获取对象的某个属性之前,需要有其他的操作,就给属性添加getter
2. setter
通过 setter 赋值
@属性名(去掉下滑线).setter def 属性名去掉下划线(self, 变量名): 给带下划线的属性赋值
- 使用 setter 前提必须要有 getter
- 如果在给对象的某个属性赋值前,需要有其他的操作,就需要添加setter
3.综合实例
class Student:
"""学生类"""
def __init__(self):
# 声明属性的时候前面加一个'_'是为了告诉别人这个属性不能直接使用
self._name = ''
self._score = 0
self._age = 0
# 给属性_name添加getter
@property
def name(self):
return self._name
# 给属性_name添加setter
@name.setter
def name(self, value):
self._name = value
@property
def age(self):
return str(self._age)+'岁'
@age.setter
def age(self, age):
if age >= 150 or age < 0:
print('赋值有误,age要求是0-150的值')
# raise 抛出异常: raise 错误类型
# raise ValueError
self._age = None
return
self._age = age
if __name__ == '__main__':
stu1 = Student()
# 不添加getter和setter
# stu1._name = '张三'
# print(stu1._name)
# 添加getter和setter
stu1.name = '李四'
print(stu1.name)
stu1.age = 20
print(stu1.age)
三、类的继承
1.说明:
一个类继承另一个类的时,它将自动获得另一个类的的所有属性和方法,原有的类称为父类,而新类称为子类
- 父类:被继承者
- 子类:继承者
2. 怎么继承
class 类名(父类): '''类的说明文档''' 属性 方法
- python中所有的类默认继承python的基类 —— object
3. 哪些内容可以继承
- 对象的属性和方法,类的字段和类方法,静态方法
- slots 的值不会被继承
- getter 和 setter 会被继承