0

0

Python 类与方法:实例属性与类属性的区别及应用

碧海醫心

碧海醫心

发布时间:2025-09-02 22:17:01

|

816人浏览过

|

来源于php中文网

原创

python 类与方法:实例属性与类属性的区别及应用

本文旨在帮助初学者理解Python中类和方法的正确使用,特别是实例属性和类属性的区别。我们将通过一个交易员(trader)类的例子,详细讲解如何定义和使用实例属性,以及如何根据价格采取相应的买卖操作,并更新交易数量。通过学习本文,你将能够避免常见的错误,编写出更加健壮和易于维护的Python代码。

理解实例属性与类属性

在Python中,类属性是属于类的属性,所有类的实例共享同一个类属性。而实例属性是属于类的实例的属性,每个实例都有自己独立的实例属性。

在上面的问题中,action 和 number 被定义为类属性,这意味着所有 trader 类的实例都共享同一个 action 列表和 number 变量。这并不是我们想要的结果,因为每个交易员实例应该有自己独立的交易记录和数量。

正确的做法是将 action 和 number 定义为实例属性,并在 __init__ 方法中初始化它们。

立即学习Python免费学习笔记(深入)”;

正确的实现方式

下面是修改后的代码:

Delphi 7应用编程150例 全书内容 CHM版
Delphi 7应用编程150例 全书内容 CHM版

Delphi 7应用编程150例 CHM全书内容下载,全书主要通过150个实例,全面、深入地介绍了用Delphi 7开发应用程序的常用方法和技巧,主要讲解了用Delphi 7进行界面效果处理、图像处理、图形与多媒体开发、系统功能控制、文件处理、网络与数据库开发,以及组件应用等内容。这些实例简单实用、典型性强、功能突出,很多实例使用的技术稍加扩展可以解决同类问题。使用本书最好的方法是通过学习掌握实例中的技术或技巧,然后使用这些技术尝试实现更复杂的功能并应用到更多方面。本书主要针对具有一定Delphi基础知识

下载
class Trader:
    def __init__(self, price):
        self.action = []  # 实例属性
        self.number = 0  # 实例属性
        self.price = price

    def take_action(self):
        if self.price < 50:
            self.action.append('BUY')
            self.number += 1
            return 'BUY'
        elif self.price > 90:
            self.action.append('SELL')
            self.number -= 1
            return 'SELL'
        else:
            self.action.append('HOLD')
            return 'HOLD'

# 示例
t1 = Trader(30)
action = t1.take_action()
print(f"Action taken: {action}") # 输出: Action taken: BUY
print(f"Number of shares: {t1.number}") # 输出: Number of shares: 1

t2 = Trader(100)
action = t2.take_action()
print(f"Action taken: {action}") # 输出: Action taken: SELL
print(f"Number of shares: {t2.number}") # 输出: Number of shares: -1

print(f"t1 Number of shares: {t1.number}") # 输出: t1 Number of shares: 1

代码解释:

  1. __init__(self, price) 方法:

    • 这个方法是类的构造函数,在创建类的实例时自动调用。
    • self.action = [] 和 self.number = 0 将 action 和 number 定义为实例属性,并初始化为空列表和 0。
    • self.price = price 将传入的价格赋值给实例的 price 属性。
  2. take_action(self) 方法:

    • 这个方法根据 self.price 的值来决定采取什么操作。
    • 如果 self.price 小于 50,则将 'BUY' 添加到 self.action 列表中,并将 self.number 增加 1。
    • 如果 self.price 大于 90,则将 'SELL' 添加到 self.action 列表中,并将 self.number 减少 1。
    • 否则,将 'HOLD' 添加到 self.action 列表中。
    • 返回采取的动作。
  3. 示例代码:

    • t1 = Trader(30) 创建一个 Trader 类的实例,价格为 30。
    • action = t1.take_action() 调用 take_action 方法,并获取采取的动作。
    • print(f"Number of shares: {t1.number}") 打印 t1 实例的 number 属性,可以看到 number 已经正确地增加了 1。
    • t2 = Trader(100) 创建一个 Trader 类的实例,价格为 100。
    • action = t2.take_action() 调用 take_action 方法,并获取采取的动作。
    • print(f"Number of shares: {t2.number}") 打印 t2 实例的 number 属性,可以看到 number 已经正确地减少了 1。
    • print(f"t1 Number of shares: {t1.number}") 打印 t1 实例的 number 属性,可以看到 t1的number没有受到t2的影响。

注意事项

  • 始终记住区分实例属性和类属性。实例属性是每个实例独有的,而类属性是所有实例共享的。
  • 在 __init__ 方法中初始化实例属性。
  • 使用 self 关键字来访问实例属性。
  • return 语句在函数中非常重要,需要根据实际情况来决定是否需要返回,以及返回什么值。

总结

通过本文,我们学习了Python中类和方法的正确使用,特别是实例属性和类属性的区别。我们通过一个交易员类的例子,详细讲解了如何定义和使用实例属性,以及如何根据价格采取相应的买卖操作,并更新交易数量。希望本文能够帮助你避免常见的错误,编写出更加健壮和易于维护的Python代码。理解这些概念对于编写面向对象的Python程序至关重要。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

186

2023.09.27

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

56

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

52

2025.11.27

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

52

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

40

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

50

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

11

2026.01.31

漫画防走失登陆入口大全
漫画防走失登陆入口大全

2026最新漫画防走失登录入口合集,汇总多个稳定可用网址,助你畅享高清无广告漫画阅读体验。阅读专题下面的文章了解更多详细内容。

13

2026.01.31

php多线程怎么实现
php多线程怎么实现

PHP本身不支持原生多线程,但可通过扩展如pthreads、Swoole或结合多进程、协程等方式实现并发处理。阅读专题下面的文章了解更多详细内容。

1

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 3.7万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号