7.4 实例属性

可口可乐风靡全球和其本地化的推广策略有着密不可分的关系。1927年,可口可乐首次进入中国,那时国人对这个黑色的、甜中带苦的饮料有一种隔阂感,再加上那时候“可乐”这东西并没有一个官方的翻译,而是直接沿用英文标识“CocaCola”,而民间将这个奇怪的东西称为“蝌蝌啃蜡”。奇怪的味道加上奇怪的名字,可乐早期进入中国并没有得到好的反响。
1979年,中国开始大规模开放进出口贸易,官方的、印有我们熟知的“可口可乐”中文标识的可乐才逐渐出现人们的生活中,变得流行起来。

同样的配方,不一样的名称,就带来了不同的效果。这说明生产的过程中有必要做一些独有的本地化调整:
class CocaCola:
formula = ['caffeine','sugar','water','soda']
coke_for_China = CocaCola()
coke_for_China.local_logo = '可口可乐' #创建实例属性
print(coke_for_China.local_logo) #打印实例属性引用结果
运行结果:
>>> 可口可乐
通过上面的代码,我们给在中国生产的可口可乐贴上了中文字样的“可口可乐”标签——在创建了类之后,通过 object.new_atrr 的形式进行一个赋值,于是我们就得到了一个新的实例的变量,实例的变量就是实例变量,而实例变量有一个专有的术语,我们称之为实例属性(Instance Atrribute)。
注:如果你见过对象属性这种说法,这二者其实是在说一件事情。
可乐的配方 (formula) 属于可口可乐(Class),而“可口可乐”的中文标识(local_logo)属于中国区的每一瓶可乐(Instance),给中国区的可口可乐贴上中文标签,并不能影响到美国或是日本等其他地区销售的可乐标签。

如果你在这里察觉了一点可疑的、甚至是令人困惑的地方,那么真是一件值得高兴的事情。 因为从引用方式上说,引用实例属性和引用类属性完全一样!但是这二者却有本质上的差异,后面我们会详细说明类属性和实例属性的区别。
