python的class里面的类变量

python类里面的注意事项
在学习python写类的过这个中遇到些问题,感觉和以前语言写类的方式有些差别,可能是自己学艺不精才遇到这些问题。


先来一段代码:

class Dog:
    n='这是一个类变量' #类变量
    n_list=[]
    name='这是类的name!'
    def __init__(self,name,weapen,role,money=1234):
        #构造函数
        #在实例化时做一些类的初始化的工作
        self.name=name #这个属于实例变量(属性)只是作用于实例本身
        self.weapen=weapen
        self.role=role
        self.money=money
    def shot_down(self):
        print('%s:被击中!'%self.name)

    def buy_gun(self,gun_name):
        print('%s:买了一部%s枪'%(self.name,gun_name))

    def bulk(self):
        print('%s ,Wang Wang Wang!'%self.name)


Dog1=Dog('superman','ak47','ploice')#实例化两个对象
Dog2=Dog('X-man','b211','robber')

print(Dog.n)
Dog1.n='这个Dog1对象的类变量'
Dog1.n_list.append("list_1")
Dog2.n_list=('list_2')
print(Dog2.n)

Dog.n="更改后的类变量!"
print(Dog1.n)
print(Dog2.n)

print(Dog1.n_list)
print(Dog2.n_list)
print(Dog.n_list)

Dog.n_list.append('123')
print(Dog2.n_list)
print(Dog1.n_list)

下面是输出的结果:

这是一个类变量
这是一个类变量
这个Dog1对象的类变量
更改后的类变量!
['list_1']
list_2
['list_1']
list_2
['list_1', '123']

在处理类变量n_list时使用append()内置函数和‘=’赋值的方式结果是不同的,append()函数处理的是针对一个内存地址。用赋值的方式可以的达到的效果是整体改变。对象化会先调用自己的类变量,如果没有就直接使用本身的类变量。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值