加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

Python的类变量和对象变量声明介绍

发布时间:2021-12-10 21:04:27 所属栏目:教程 来源:互联网
导读:Python的类和C++一样,也都是存在两种类型的变量,类变量和对象变量!前者由类拥有,被所有对象共享,后者由每个对象独有。这里我主要想讨论一下他们的声明办法。 首先说的是对象变量: 只要是声明在类的语句块中,且没有self.前缀的变量都是类变量,且类变
  Python的类和C++一样,也都是存在两种类型的变量,类变量和对象变量!前者由类拥有,被所有对象共享,后者由每个对象独有。这里我主要想讨论一下他们的声明办法。
 
  首先说的是对象变量:
 
  只要是声明在类的语句块中,且没有"self."前缀的变量都是类变量,且类变量是被所有对象共享的。
 
  注意红字部分,如果声明在类的方法的语句块中,那么就是局部变量了!比如下面这个例子:
 
 1 #!/usr/bin/env python
 2 # -* - coding: UTF-8 -* -
 3 #Function: Use the class var
 4
 5 class Person:
 6     cvar = 1
 7     def sayHi(self):
 8       fvar = 1
 9
10 print Person.cvar
11 print Person.fvar
  那个cvar就是属于Python类的变量,而那个fvar就是方法sayHi()中的局部变量,第11条语句那里就会报错!
 
 
 
  接下来我们再来讨论一下对象变量的声明方法:
 
    在类的方法的语句块中声明的以“self.”开头的变量都是对象变量,由对象独有!
 
  比如下面这个例子:
 
 1 #!/usr/bin/env python
 2 # -* - coding: UTF-8 -* -
 3 #Function: Use the object var
 4
 5 class Person:
 6     def haveName(self):
 7       self.name = 'Michael'
 8     def sayName(self):
 9       print self.name
10
11 def main():
12     p = Person()
13
14     p.haveName()
15     p.sayName()
16
17 main()
  这里在haveName()方法中声明了一个对象变量,然后再在sayName()方法中调用。然后主程序中就会输出了!
 
  不过建议将对象变量声明在__init__()方法中,因为对象一被创建的时候即会调用这个方法,否则的话,比如上面那个例子,如果我先调用sayName()的话,那么就会出错,说对象实例还没有name这个属性!
 
 
 
  最后还想说的一点的就是,Python中没有private public这些关键字来标明类的变量或者方法的访问权限,但是可以通过在变量或者方法的前面加上"__"来表明这个成员是被类私有的,不能在外部调用,比如下面这个例子:
 
 1 #!/usr/bin/env python
 2 # -* - coding: UTF-8 -* -
 3 #Function: Use the private var and func
 4
 5 class Person:
 6     __count = 0            #这个变量是私有数据成员,只能被类的方法访问,是属于类的
 7     def get(self):
 8       return Person.__count
 9     def __pri(self):
10       print 'Yes'
11
12 p = Person()
13 print p.get()
14
15 p.__pri()
16 print p.__count
   比如这里的类变量__count就是类私有的,只能被类的函数成员调用(13行),而在类外面调用(16行)就是错误的!还有那个函数成员__pri()也是私有的,在类外面直接调用(15行),也是错误的!
 

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读