首页 技术 正文
技术 2022年11月9日
0 收藏 779 点赞 3,225 浏览 1262 个字

  Python的类和C++一样,也都是存在两种类型的变量,类变量和对象变量!前者由类拥有,被所有对象共享,后者由每个对象独有。这里我主要想讨论一下他们的声明办法。

  首先说的是对象变量:

    只要是声明在类的语句块中,且没有”self.”前缀的变量都是类变量,且类变量是被所有对象共享的。

  注意红字部分,如果声明在类的方法的语句块中,那么就是局部变量了!比如下面这个例子:

 #!/usr/bin/env python
# -* - coding: UTF-8 -* -
#Function: Use the class var class Person:
cvar = 1
def sayHi(self):
  fvar = 1 print Person.cvar
print Person.fvar

  那个cvar就是属于Python类的变量,而那个fvar就是方法sayHi()中的局部变量,第11条语句那里就会报错!

  接下来我们再来讨论一下对象变量的声明方法:

    在类的方法的语句块中声明的以“self.”开头的变量都是对象变量,由对象独有!

  比如下面这个例子:

 #!/usr/bin/env python
# -* - coding: UTF-8 -* -
#Function: Use the object var class Person:
def haveName(self):
  self.name = 'Michael'
def sayName(self):
  print self.name def main():
p = Person() p.haveName()
p.sayName() main()

  这里在haveName()方法中声明了一个对象变量,然后再在sayName()方法中调用。然后主程序中就会输出了!

  不过建议将对象变量声明在__init__()方法中,因为对象一被创建的时候即会调用这个方法,否则的话,比如上面那个例子,如果我先调用sayName()的话,那么就会出错,说对象实例还没有name这个属性!

  最后还想说的一点的就是,Python中没有private public这些关键字来标明类的变量或者方法的访问权限,但是可以通过在变量或者方法的前面加上”__”来表明这个成员是被类私有的,不能在外部调用,比如下面这个例子:

 #!/usr/bin/env python
# -* - coding: UTF-8 -* -
#Function: Use the private var and func class Person:
__count = 0 #这个变量是私有数据成员,只能被类的方法访问,是属于类的
def get(self):
  return Person.__count
def __pri(self):
  print 'Yes' p = Person()
print p.get() p.__pri()
print p.__count

  比如这里的类变量__count就是类私有的,只能被类的函数成员调用(13行),而在类外面调用(16行)就是错误的!还有那个函数成员__pri()也是私有的,在类外面直接调用(15行),也是错误的!

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,494
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295