问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python类和实例变量的理解与运用?

发布网友 发布时间:2022-04-22 08:09

我来回答

1个回答

热心网友 时间:2022-06-18 09:17

9.3.5. 类和实例变量
一般来说,实例变量用于对每一个实例都是唯一的数据,类变量用于类的所有实例共享的属性和方法:
class Dog:
kind = 'canine' # class variable shared by all instances
def __init__(self, name):
self.name = name # instance variable unique to each instance
>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.kind # shared by all dogs
'canine'
>>> e.kind # shared by all dogs
'canine'
>>> d.name # unique to d
'Fido'
>>> e.name # unique to e
'Buddy'
正如在 术语相关 讨论的, 可变 对象,例如列表和字典,的共享数据可能带来意外的效果。例如,下面代码中的 tricks 列表不应该用作类变量,因为所有的 Dog 实例将共享同一个列表:
class Dog:
tricks = [] # mistaken use of a class variable
def __init__(self, name):
self.name = name
def add_trick(self, trick):
self.tricks.append(trick)
>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.add_trick('roll over')
>>> e.add_trick('play dead')
>>> d.tricks # unexpectedly shared by all dogs
['roll over', 'play dead']
这个类的正确设计应该使用一个实例变量:
class Dog:
def __init__(self, name):
self.name = name
self.tricks = [] # creates a new empty list for each dog
def add_trick(self, trick):
self.tricks.append(trick)
>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.add_trick('roll over')
>>> e.add_trick('play dead')
>>> d.tricks
['roll over']
>>> e.tricks
['play dead']
总结后的知识点希望能帮到你
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
mrna转录试剂盒 windows7应用程序损坏或丢失怎么办? 联想windows7怎么恢复不小心删除的应用 Win7电脑图标不见了如何恢复解决Win7电脑图标丢失问题的有效方法_百 ... 美女主播软件有哪些 什么软件看美女直播? 什么视频直播软件可以免费看女神直播? 钣金工业设计 钣金灰本段用途 关于刮胡子的相关问题 笔记本英伟达显卡驱动安装失败? 请问类,对象,和实例的区别与联系 不知道为什么我的笔记本电脑win10NVIDIA老是更新安... 类和实例的区别 类方法 和实例方法区别 类方法和实例方法区别是什么? 有一个有创意的朋友是一种怎样的体验? 风车转动利用的是什么原理 有什么小发明创想吗?不用制作,写个80左右的小说... 玻璃究竟是怎样的产物?~奇怪 多吃味精好吗? 纸风车为什么会转动? 美术作业 要求画关于童年的封面,就是书的封面,不... 风车的转动是什么现象,升降国旗是什么现象? 从网上看到挺多好看的彩色碗,可是材质是玻璃的,会... 成都创意蓝色广告有限公司怎么样? 联想笔记本电脑用驱动精灵更新显卡驱动时安装失败... 风车为什么会旋转 艺术玻璃的介绍 软件销售电话销售模拟话术 华硕的笔记本安装显卡驱动失败怎么办? 类变量和实例变量的区别是什么? 3D和值怎么算 实例方法和类方法有什么区别 3d合值是什么? m495的联想笔记本电脑显卡驱动安装失败,要怎么办? 怎么看3d和值? 笔记本显卡怎么更新不了 JAVA类中类方法和实例方法有什么区别 3D和值公式怎么计算 求超好听的伤感歌曲铃声 3D和值公式怎么计算? java中类方法和实例方法的区别是什么,说通俗一点 为什么惠普笔记本WIN7显卡驱动安装失败 伤感、流行的铃声谁知道推荐几首? 3D和值怎么确定 3D和值怎么算的?和值怎么算 java举例类方法与实例方法的区别 有什么好听的歌当手机铃声 福彩3D的和值怎么计算,如果和值是10,有多少注?