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

[译]Python中的类属性与实例属性的区别

以下的区别有意义么?

class A(object):
    foo = 5   # some default value

Vs

class B(object):    def __init__(self, foo=5):
             self.foo = foo

如果你需要创建很多实例,这两种风格在表现和空间要求上有什么区别么?当你阅读代码的时候,你是否会考虑这两种风格的重要区别?

除了表现上的考虑,这边有一个重要的语义上的不同。在类属性的那个例子中,只有一个对象被引用。用实例属性设置的实例中,实例有可能被多个对象引用。比如说:

>>> class A: foo =[ ]
>>> a, b = A(), A()
>>> a.foo.append(5)
>>> b.foo
[5]
>>> class A:
...  def __init__(self): self.foo = [ ]
>>> a, b = A(), A()
>>> a.foo.append(5)
>>> b.foo   
[]

原文链接:Python: Difference between class and instance attributes

相关文章:

  • 如何利用业余时间快乐的赚钱
  • 洞悉linux下的Netfilteriptables:什么是Netfilter?
  • 自执行函数 闭包
  • 一周规划汇总_2016-09-18
  • wdcp日志
  • 【脚本】新增未扩展磁盘容量
  • Linux中rz和sz命令用法详解
  • c#用牛顿法计算根号下2的值
  • hadoop命令报错:权限问题
  • welcome-file-list标签的控制作用以及在springmvc中此标签的的配置方式
  • DateFormat 竟然是非线程安全的?!!!!!
  • 第九章:引导Netty应用程序
  • springmvc权限拦截器
  • 使用PowerShell 监控运行时间和连接情况
  • leetcode70
  • 230. Kth Smallest Element in a BST
  • Android框架之Volley
  • ES学习笔记(12)--Symbol
  • Javascript 原型链
  • javascript面向对象之创建对象
  • Java深入 - 深入理解Java集合
  • jQuery(一)
  • JS字符串转数字方法总结
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • MySQL主从复制读写分离及奇怪的问题
  • Service Worker
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 多线程 start 和 run 方法到底有什么区别?
  • 多线程事务回滚
  • 后端_MYSQL
  • 前端路由实现-history
  • 区块链共识机制优缺点对比都是什么
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何设计一个微型分布式架构?
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 延迟脚本的方式
  • 一个SAP顾问在美国的这些年
  • 因为阿里,他们成了“杭漂”
  • 栈实现走出迷宫(C++)
  • 正则学习笔记
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • elasticsearch-head插件安装
  • Mac 上flink的安装与启动
  • 湖北分布式智能数据采集方法有哪些?
  • !$boo在php中什么意思,php前戏
  • #单片机(TB6600驱动42步进电机)
  • $$$$GB2312-80区位编码表$$$$
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (BFS)hdoj2377-Bus Pass
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (附源码)计算机毕业设计大学生兼职系统
  • (算法)Game
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException