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技术2020-07-17
- 如何用python创建虚拟环境?掌握这些技术你才能真正的进步2020-07-17
- python集合可以用来做什么?原来这些功能才是最实用的2020-07-16
- python单双引号应该如何选择?从此再也不为输出字符担心2020-07-16
- python引包的方法有哪些?这三种方法才是你最需要的2020-07-14
- python获取日期的方法是什么?这个方法才是你需要的2020-07-14
- python互联网协议是什么?掌握这个才算是会用python2020-07-13
- 什么是python质量控制算法?这个算法的操作过程就在这里2020-07-13
- python深拷贝和浅拷贝的区别是什么?这些用法才是我们要关注的2020-07-10
- python面对对象的特性有什么?想学好python就不能忘记这个2020-07-10