当前位置: 首页 > news >正文

python | 类与对象

在 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('🐕🛷 萨摩耶拖动雪橇,穿梭在茫茫白雪中')
http://www.lryc.cn/news/316854.html

相关文章:

  • 基于Qt 和python 的自动升级功能
  • 【论文阅读】IEEE Access 2019 BadNets:评估深度神经网络的后门攻击
  • Unity 让角色动起来(动画控制器)
  • ubuntu22.04环境中安装pylint
  • 主流数据库的区别
  • veeam备份基础
  • Flink并行度
  • 这届留学生是懂作弊的,ChatGPT震惊教授一整年!
  • CVE-2023-38836 BoidCMSv.2.0.0 后台文件上传漏洞
  • pf4j插件实践验证
  • 计算机组成原理之运算方法和运算器
  • Redux Toolkit
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的商品识别系统(深度学习+UI界面+训练数据集+Python代码)
  • 在亚马逊云EC2上启动PopOS
  • Linux运维:磁盘分区与挂载详解
  • jeecg 项目 springcloud 项目有一个模块 没加载进来 只需要 把这个模块放到 可以加载到模块的位置 刷新依赖
  • spring boot使用mybatisplus访问mysql的配置流程
  • git 如何将多个提交点合并为一个提交点 commit
  • [C语言] 数据存储
  • LoadBalancer负载均衡服务调用
  • YoloV8实战:YoloV8-World应用实战案例
  • Python 导入Excel三维坐标数据 生成三维曲面地形图(体) 5-1、线条平滑曲面且可通过面观察柱体变化(一)
  • cmake初识
  • Swift 入门学习:集合(Collection)类型趣谈-下
  • nova 12 LTPO来了!LTPO动态自适应刷新率屏120Hz体验更流畅 ,1Hz阅读更省电
  • 【rk3368 android6.0 恢复出厂设置功能】
  • 闲聊电脑(7)常见故障排查
  • Vim 编辑器|批量注释与批量取消注释
  • Android 使用AIDL HAL
  • C++的一些基础语法