美文网首页
python3【对象】 探究类变量和对象变量

python3【对象】 探究类变量和对象变量

作者: 王上山 | 来源:发表于2018-03-13 10:31 被阅读0次
    #coding=utf-8
    #探究类变量和对象变量
    class Robot:
        '''表示一个带有名字的机器人'''
        #一个类变量,用来技术机器人的数量
        population=0
        def __init__(self,name):
            '''初始化数据'''
            self.name=name
            print ("(Initializing {})".format(self.name))
            #当有人被创建时,机器人将会增加人口数量
            Robot.population+=1
        def die(self):
            '''我挂了'''
            print ('{} is being destroyed!'.format(self.name))
            Robot.population-=1
            if Robot.population == 0:
                print ('{} was the last one'.format(self.name))
            else:
                print ('there are still {:d} robots working'.format(Robot.population))
        def say_hi(self):
            '''来自机器人的诚挚问候
    没问题,你做得到'''
            print ('Greetings,my master call me {}'.format(self.name))
        @classmethod
        def how_many(cls):
            '''打印出当前人口数量'''
            print('we have {:d} robots.'.format(cls.population)) #十进制整数
    droid1=Robot("R2-D2")
    droid1.say_hi()
    Robot.how_many()
    print('--------')
    droid2=Robot('C-3P0')
    droid2.say_hi()
    Robot.how_many()
    print('--------')
    print ('\nRobots can do somework here.\n')
    print ("Robots have finished their work.So let's  destroy them.")
    droid1.die()
    droid2.die()
    Robot.how_many()
    

    下面我们来探究一下类变量和对象变量是如何在本例中使用的:
    在本例中 population 属于 Robot 类,因此它是一个类变量。name 变量属于一个对象(通过self 分配),因此它是一个对象变量
    因此,我们通过Robot.population 而非self.population 引用 popuation 类变量。我们对于 name对象变量采用 self.name 标记法加以称呼,这是这个对象中所具有的方法,要记住这个类变量与对象变量之间的简单区别。同时你还要注意 当一个对象变量与一个类变量名称相同时,类变量将会被隐藏 [对象变量优先级高]

    相关文章

      网友评论

          本文标题:python3【对象】 探究类变量和对象变量

          本文链接:https://www.haomeiwen.com/subject/rfwafftx.html