zoukankan      html  css  js  c++  java
  • python_94_类变量实例变量

    class Role:
        n=123#类变量
        name='我是类name'
        list=[]
        def __init__(self,name,role,weapon,life_value=100,money=15000):
            '构造函数:实例化时做一些类的初始化工作'
            self.name=name#实例变量(静态属性),作用域就是实例本身
            self.role=role
            self.weapon=weapon
            self.life_value=life_value
            self.money=money
        def shot(self):# 类的方法,功能 (动态属性)
            print("shooting...")
        def got_shot(self):
            print("ah...,I got shot...")
        def buy_gun(self,gun_name):
            print("%s just bought %s"%(self.name,gun_name))
    print(Role,Role.n)
    r1= Role('Alex','police','AK47') #生成一个角色,为Role(类)的一个实例
    r2= Role('Jack','terrorist','B22')#Role(r2,'Jack','terrorist','B22')把一个类变成一个具体对象的过程叫 实例化(初始化一个类,造了一个对象)
    print(r2.n,r2.name)#打印的name是实例化的name,不是类name(规律:变量先去实例中找,找不到再去类中找)
    r2.n='改变类变量'#在r2实例中增加了个实例变量n,类变量其实没改变,所以r1.n还是123
    print(r2.n,Role.n,r1.n)
    Role.n='ABC'
    print(r2.n,Role.n,r1.n)#r2.n不变,取的是自身的实例变量n
    r2.name='王大屯'
    r2.fangdanyi=True
    print(r2.name,r2.fangdanyi)
    r2.buy_gun('机关枪')
    print(r2.weapon)
    del r2.weapon
    #print(r2.weapon)删掉后打印不出来
    r1.list.append('from r1')
    print(r1.list)
    r2.list.append('from r2')
    print(r2.list)
    print(Role.list)#三个list都共用的同一个内存变量
    

      参考:http://www.cnblogs.com/alex3714/articles/5188179.html

  • 相关阅读:
    MySQL的安装问题
    初识二分法
    PK赛 lower_bound( )和upper_bound( )的应用
    记录
    "双指针"去重有序数组
    归并排序(循序渐进中......)
    [2021.4.20打卡]LeetCode781. 森林中的兔子
    杂记...(持续更新)
    [未完待续](c++实现)八数码Ⅱ
    [回忆向]快速排序(降序) 感悟
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/8468868.html
Copyright © 2011-2022 走看看