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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,285评论 0 2
  • Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的...
    有一种再见叫青春阅读 628评论 0 3
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,127评论 0 4
  • 这是一个悲桑的爱情故事。故事从跑步开始。 9个月没跑步的男主一天心血来潮去跑步,居然遇见了他心中的完美女孩。 很自...
    跑嗨乐阅读 859评论 0 1
  • 轻抬脚跟, 不安、犹豫, 计算着时间, 掐算着步伐, 这次, 一定要好好的, 看清你。 思维停止, 脚步向前, 抬...
    朝彻撄宁阅读 183评论 0 0