类
类把数据与功能绑定在一起。
创建新类就是创建新的对象类型,从而创建该类型的新实例 。
1. 类定义
- 定义类使用关键字
class
,后跟类名:
python
class MyClass:
pass
类名后可加括号,没有参数时可不加
2. 实例对象
- 类的实例化使用函数表示法:
python
x = MyClass()
变量 x
就是 MyClass
类的一个实例对象
3. 实例的初始化
- 实例的初始化使用一个名为
__init__()
的特殊方法(固定用法)。 - 当一个类定义了
__init__()
方法时,类的实例化操作会自动为新创建的类实例发起调用__init__()
。
python
class Student():
"""学生类"""
def __init__(self, name, age):
self.name = name
self.age = age
zhangsan = Student('zhangsan', 18)
lisi = Student('lisi', 19)
上面定义了两个属性:姓名name
和 年龄age
之后的学生类Student
的所有实例(比如 zhangsan
和 lisi
)均会有这两个属性
4. 实例属性(变量)
- 实例的属性通过
self.{变量名}
来定义 - 多个实例之间,它们的属性是不同的变量,不影响各自的值
5. 实例方法(函数)
- 实例方法就是类中定义的函数;用于操作实例属性
- 实例方法第一个参数为
self
,代表实例本身,固定用法
python
class Student():
"""学生类"""
def __init__(self, name, age):
self.name = name
self.age = age
def get_age(self):
"""获取年龄"""
return self.age
def set_age(self, new_age):
"""修改年龄"""
self.age = new_age
zhangsan = Student('zhangsan', 18)
lisi = Student('lisi', 19)
print(zhangsan.age) # 18
print(zhangsan.get_age()) # 18
zhangsan.set_age(20)
print(zhangsan.age) # 20
6. 类的继承
比如我们在学生类Student
的基础上创建一个女学生类StudentGirl
:
python
class StudentGirl(Student):
"""女学生类"""
def get_age(self):
"""获取年龄"""
return self.age - 1
继承可以重写父类的方法,比如上面就重写了父类的获取年龄的方法。获取年龄时会减少 1 岁
7. 总结
类的使用方法很简单,难的是类的概念需要弄清楚;我总结了几点:
- 类是一群类似的群体,比如人类、动物、学生等等
- 子类和类的实例需要重点区分开:具体到个人,比如张三就是人类的实例;而不能说张三是人类的子类,你可以说黄种人是人类的子类
类 | 实例 | 子类 |
---|---|---|
人 | 张三 | 黄种人 |
宠物 | 阿黄 | 狗 |
路 | 天安门东路 | 高速公路 |
鸟 | 阿飞 | 燕子 |