当前第2页 返回上一页
三、公有属性的特性
我们不仅可以访问,还能改变公有属性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class Person( object ):
nationality = 'CN'
def __init__( self , name, job, phone, address):
self .name = name
self .job = job
self .phone = phone
self .address = address
def sayhi( self ):
print ( "hell,%s" % self .name)
p1 = Person( 'Bigberg' , 'Doctor' , '8833421' , 'hz' )
p2 = Person( 'Ashlex' , 'Police' , '8833232' , 'bj' )
print (Person.nationality)
Person.nationality = 'us'
print (Person.nationality)
CN
us
|
3.1 单个实例调用和改变公有属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | print ( "--------Befoer change---------" )
print (Person.nationality)
print (p1.nationality)
print (p2.nationality)
print ( "--------after change---------" )
print (Person.nationality)
p1.nationality = 'JP'
print (p1.nationality)
print (p2.nationality)
|
--------Befoer change---------
CN
CN
CN
--------after change---------
US
JP
US
p1在修改之前我们可以很好理解,因为大家都是调用的类Person的公有属性nationality,所以p1、p2的国籍属性是一样的,都是 'CN'。但是为什么在p1修改过公有属性后,p2的国籍属性没有改变呢?
在我们定义一个Person类的时候,其实在内存中就已经存在了,当然也包含了这个类的公有属性。在最初实例p1去调用类Person的nationality这个属性时,是直接引用类当中nationality的内存地址,而不是自己新增一个属性叫nationality。
如下所示:
1 2 3 4 5 6 7 8 9 10 | print ( id (Person.nationality))
print ( id (p1.nationality))
print ( id (p2.nationality))
print (Person.nationality, p1.nationality, p2.nationality)
1751236836128
1751236836128
1751236836128
CN CN CN
|
这就可以解释为什么在Person类中的nationality改变为 'US' 时,p2也跟着改变。因为是直接引用内存当中的值。
在p1直接赋值nationality这个属性后,其实就实例p1为自己新增了一个成员变量,叫做nationality。只是他们的名称相同而已,但是两者之 间并没有联系,甚至内存地址也不相同。
1 2 3 4 5 6 7 8 9 10 11 | print ( id (Person.nationality))
print ( id (p1.nationality))
print ( id (p2.nationality))
print (Person.nationality, p1.nationality, p2.nationality)
2434579585096
2434579585152
2434579585096
US JP US
|
所以 p1.nationality='JP',并没有修改类Person的公有属性,而是为自己创建了一个新的成员属性,因此p1的改变对类的公有属性没有影响。
以上就是有关类的公有属性的介绍的详细内容,更多文章请关注木庄网络博客!!
返回前面的内容
相关阅读 >>
如何利用Python实现购物程序思路以及实现代码
Python下的selenium安装的过程分享
Python模块是什么?写法及作用分析
利用Python将图片转换成excel文档格式详解
为什么黑客都使用Python
Python发展前景怎么样
Python怎么统计文件中大写字母的个数?
Python3.4使用循环的实例详解
Python中记录循环次数的方法
Python中xor是什么意思
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » 有关类的公有属性的介绍