当前位置: 首页 > python > python学习教程 > python进阶——Python类和实例变量

python进阶——Python类和实例变量

更新时间:2019-10-09 14:52:45 来源:环球网校 浏览33收藏6
摘要 在介绍域后,我们就要告诉你一些Python的类和实例变量。类和实例变量有一些巧妙的技巧,你需要知道类对象与类定义语法如何工作才能完全理解正在发生的事情。顺便说一下,关于这个主题的知识对任何高级Python程序员都很有用。

一般来说,实例变量用于每个实例的唯一数据,而类变量用于类的所有实例共享的属性和方法:

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'

正如 名称和对象 中已讨论过的,共享数据可能在涉及 mutable 对象例如列表和字典的时候导致令人惊讶的结果。 例如以下代码中的 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']

以上就是我们整理的Python类和实例变量,这些代码和理论都可以或多或少的帮助我们了解Python类和实例变量,如果您在练习python的时候又遇到了困难,可以试着回来看看,也许会给你意想不到的结果,环球网校小编在这里祝大家的python学习之路顺利。

分享到: 编辑:环球网校

资料下载 精选课程 老师直播 真题练习

python资格查询

python历年真题下载 更多

python每日一练 打卡日历

0
累计打卡
0
打卡人数
去打卡

预计用时3分钟

python各地入口
环球网校移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载

返回顶部