Python的类和类实例都是可变对象,可以随时给属性赋值,并且在原处修改。 在对类属性进行修改时需要特别小心,因为所有的类实例都继承共享类属性,除非实例本身存在和类属性同名的属性。对类属性进行修改,会影响到所有由这个类生成的实例。 运行结果: 代码中,将类属性CA.cls_pre 重新赋值为 'cc ...
分类:
编程语言 时间:
2016-06-26 20:59:11
阅读次数:
533
python并不刻意区分“按值传递”和“按引用传递”。 在底层,python将值分为不可变对象(比如int,str)和可变对象(比如列表)。所有的变量都是对某个对象的引用,赋值(=)和函数参数传递,都将改变变量所引用的对象。 对于不可变对象,赋值和传参将导致新创建对象,这和C++的引用行为是不同的。 ...
分类:
编程语言 时间:
2016-06-26 19:40:30
阅读次数:
148
从iOS6以后,引入了一些非常简洁的语法,例如 (1)@[objects, ...] //@[] 初始化不可变数组 (2)@{key:object, ...} //@{}初始化不可变字典 (3)@(object) //@()初始化不可变对象 ...
分类:
其他好文 时间:
2016-06-16 19:44:10
阅读次数:
118
观察者模式的应用场景: 1、 对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。 2、 对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。 举个例子说明,这个例子讲述一个老大吩咐小弟做事的故事,只要老大一声令下小弟就开始工作,小弟成员可增减.根据模式定义,使用两个 ...
分类:
编程语言 时间:
2016-06-13 13:40:22
阅读次数:
210
浅复制:只复制指向对象的指针,而不复制引用对象本身。计数器+1 ,就像比如retain 深层复制:复制引用对象本身。计数器不变,产生新对象 retain:始终是浅复制。引用计数每次加一。返回对象是否可变与被复制的对象保持一致。 copy:对于可变对象为深复制,引用计数不改变;对于不可变对象是浅复制, ...
分类:
其他好文 时间:
2016-06-13 08:49:04
阅读次数:
265
什么是不可变对象? 众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括 基本数据类型的值不能改变,引用类型的变量不能指向 ...
分类:
编程语言 时间:
2016-06-06 11:49:57
阅读次数:
251
对于对象引用问题,一直是一知半解的状态,现整理以备使用。 操作不可变对象进行加减运算时,会在内存中创建新的不可变实例,不会影响原来的引用>>> c=12>>> d=c>>> c+=1>>> c13>>> d12>>> >>> a="345a">>> b=a>>> a+="dfger">>> a'34 ...
分类:
编程语言 时间:
2016-05-31 15:46:46
阅读次数:
136
每一个JavaScript函数都是Function对象的一个实例, 它有一个仅供JavaScript引擎存取的内部属性[[Scope]]. 这个[[Scope]]存储着一个作用域的集合, 这个集合就叫”作用域链”, 集合中存储着”可变对象”VO或”活动对象”AO(AO比VO多this和argumen ...
分类:
编程语言 时间:
2016-05-09 01:34:43
阅读次数:
221
最近一直在看《java并发编程实践》。 很大收获谈不上,至少见识到了并发世界的广博。 以前对java并发的概念是少之又少,感觉只需要用好synchronized关键字就好。 如今回想,实乃现实版的井中之蛙,狭隘至极。 书大概看完了,梳理下看到的一些点。 关键字 线程安全: 存在线程共享可变对象,则需 ...
分类:
编程语言 时间:
2016-04-26 00:19:12
阅读次数:
411
第15条:使可变性最小化 通过一个复数类来看不可变类。 复数类具有实部和虚部,它提供的加减乘除运算都是返回新的Complex实例,而不是修改这个实例。不可变对象有很多优点,它只有一种状态,即被创建时的状态,而且前面也提到过,它本质上是线程安全的。 这里还用到一个小技巧,对频繁使用的值,为它们提供公有
分类:
编程语言 时间:
2016-03-20 14:32:13
阅读次数:
222