在 Python 中,我们用关键字 class
来定义类:
class Player:pass
Player
类中只有一条语句 pass,
这是 Python 中的特殊语句,没有实际含义。
Python 在执行到它时也什么都不会做。不过它能够保证结构的完整性。例如,我们只写了一行 while True:
,Python 会警告我们循环体为空;而如果我们在循环体位置添加一行 pass
,Python 就不会报错了:
# 循环体为空,Python 会报错
while True:# 虽然循环体内的 pass 没有实际含义
# 但它补全了 while 循环结构,因此 Python 不会报错
while True:pass
类中可以包含若干 属性 和 方法。属性 用于描述对象的特征,方法 用来定义对象的行为。
class Player:arm_num = 2 # 两只胳膊leg_num = 2 # 两条腿eye_num = 2 # 一双眼睛
类的实例化:
class Player:arm_num = 2 # 两只胳膊leg_num = 2 # 两条腿eye_num = 2 # 一双眼睛# 实例化 Player 类,生成一个新的实例对象
robot = Player()
实例化 Player
类,并将生成的新的实例对象赋值给变量 robot。此时的变量 robot 就是 Player
类实例化出来的实例 对象(object)。
方法定义与调用:
类的 方法 用来描述对象的 行为。
class Player:# 登记信息def sign_up(self, name, brand): self.name = name # 登记姓名self.brand = brand # 登记品牌print('已成功登记信息')print('+name:{}\tbrand: {}\t'.format(name, brand))
在定义类方法时,一定要把
self
参数放在参数列表第一项
继承:
定义了 Dog
类,想再定义一个它的 子类,名叫 Samoyed
# 狗狗
class Dog: pass# 萨摩耶犬
class Samoyed(Dog): pass
子类调用父类方法:
# 狗狗
class Dog:# 犬科动物有四条腿leg_num = 4# 能奔跑def run(self):print('🐕💨 狗狗快跑')# 开心的时候会摇尾巴def happy(self):print('🐕💓 狗狗开心地摇起了尾巴')
# 萨摩耶犬
class Samoyed(Dog): pass# 柯基犬
class Corgi(Dog): pass# 小白是一只萨摩耶犬
white = Samoyed()
print('小白:', end = '') # 输出“小白:”后不换行
# 小白能奔跑
white.run()# 来福是一只柯基犬
fu = Corgi()
print('来福:', end = '')
# 来福在快乐地摇尾巴
fu.happy()# 输出:
# 小白:🐕💨 狗狗快跑
# 来福:🐕💓 狗狗开心地摇起了尾巴
多态:
子类重写父类方法:
# 狗狗
class Dog:# 犬科动物有四条腿leg_num = 4# 能奔跑def run(self):print('🐕💨 狗狗快跑')# 开心的时候会摇尾巴def happy(self):print('🐕💓 狗狗开心地摇起了尾巴')# 萨摩耶犬
class Samoyed(Dog):# 重写父类中的 run() 方法def run(self):print('🐕💨💨 萨摩耶狂奔起来,像一团漂浮的云')# 柯基犬
class Corgi(Dog):def run(self):print('🐕💨 柯基飞快地摆动它的小短腿,屁股一晃一晃的')# 牧羊犬
class Collie(Dog):def run(self):print('🐕💨💨💨 牧羊犬咻地一下蹿了出去,不愧是竞速王者')
子类新增方法:
为 Samoyed
类单独设计一个 sledding()
方法:
# 狗狗
class Dog: pass# 萨摩耶犬是犬科动物
class Samoyed(Dog):# 萨摩耶会拉雪橇def sledding(self):print('🐕🛷 萨摩耶拖动雪橇,穿梭在茫茫白雪中')