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

2018-03-13  本文已影响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 标记法加以称呼,这是这个对象中所具有的方法,要记住这个类变量与对象变量之间的简单区别。同时你还要注意 当一个对象变量与一个类变量名称相同时,类变量将会被隐藏 [对象变量优先级高]

上一篇下一篇

猜你喜欢

热点阅读