python的类变量和成员变量用法_Python 类变量和成员变量

news/2024/7/24 4:02:27 标签: python的类变量和成员变量用法

Python 类变量和成员变量

类与对象的方法

我们已经讨论了类与对象的功能部分,现在我们来看一下它的数据部分。事实上,它们只是与类和对象的名称空间 绑定 的普通变量,即这些名称只在这些类与对象的前提下有效。

有两种类型的 域 ——类的变量和对象的变量,它们根据是类还是对象 拥有 这个变量而区分。

类的变量 由一个类的所有对象(实例)共享使用。只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。

对象的变量 由类的每个对象/实例拥有。因此每个对象有自己对这个域的一份拷贝,即它们不是共享的,在同一个类的不同实例中,虽然对象的变量有相同的名称,但是是互不相关的。通过一个例子会使这个易于理解。

#!/usr/bin/python

# Filename: objvar.py

class Person:

'''Represents a person.'''

population = 0

def __init__(self, name):

'''Initializes the person's data.'''

self.name = name

print '(Initializing %s)' % self.name

# When this person is created, he/she

# adds to the population

Person.population += 1

def __del__(self):

'''I am dying.'''

print '%s says bye.' % self.name

Person.population -= 1

if Person.population == 0:

print 'I am the last one.'

else:

print 'There are still %d people left.' % Person.population

def sayHi(self):

'''Greeting by the person.

Really, that's all it does.'''

print 'Hi, my name is %s.' % self.name

def howMany(self):

'''Prints the current population.'''

if Person.population == 1:

print 'I am the only person here.'

else:

print 'We have %d persons here.' % Person.population

swaroop = Person('Swaroop')

swaroop.sayHi()

swaroop.howMany()

kalam = Person('Abdul Kalam')

kalam.sayHi()

kalam.howMany()

swaroop.sayHi()

swaroop.howMany()

(源文件:code/objvar.py)

输出

$ python objvar.py

(Initializing Swaroop)

Hi, my name is Swaroop.

I am the only person here.

(Initializing Abdul Kalam)

Hi, my name is Abdul Kalam.

We have 2 persons here.

Hi, my name is Swaroop.

We have 2 persons here.

Abdul Kalam says bye.

There are still 1 people left.

Swaroop says bye.

I am the last one.

类的变量 由一个类的所有对象(实例)共享使用。只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。

当实例调用完成之后或者有实例被删除时(del 实例名称)调用__del__函数


http://www.niftyadmin.cn/n/1570142.html

相关文章

node的文件流的读取和写入

作用 nodeJS中的流最大的作用是:读取大文件的过程中,不会一次性的读入到内存中。每次只会读取数据源的一个数据块。然后后续过程中可以立即处理该数据块(数据处理完成后会进入垃圾回收机制)。而不用等待所有的数据。 这么做的原因:因为浏览…

pyqt5 textbrowser显示print语句输出_return语句

在Python中函数的返回值是函数重要的组成部分。函数主要用于实现程序的部分功能,我们可以将函数执行后的结果返回给程序做出进一步的操作。return语句主要用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句默认返回None。隐式返回每…

mysql简单的增删改查

增(insert) 直接插入单行数据: 格式:insert into "表名" values (值1、值2、值3。。。) 这中方法是当需要给全部列都插入数据时使用 对应列名插入单行数据: 格式: insert into book(列名1、列名…

kali桌面显示出来_关于电脑桌面以及任务栏的3个常见问题,这回答详细且专业!...

“去邻居家玩时着见他家电脑的桌面很漂亮,它们是怎么完成的呀?”对桌面背景进行一定的设置你就可以完成。桌面背景就是用户打开计算机进人 Windows XP操作系统后所出现的桌面背景颜色或图片。你可以选择单一的颜色作为桌面的背景,也可以选择类…

利用node搭建服务器

作用: 我们知道传统的HTPP服务器会由Aphche、Nginx、IIS之类的软件来担任,但是nodejs并不需要,nodejs提供了http模块,自身就可以用来构建服务器,而且http模块是由C实现的,性能可靠。我们在nodejs中的教程或…

python求和函数sum_python sum 函数中可以使用条件语句吗

這邊的 for 或是 if 都跟 sum 本身沒有什麼關係,如同 大鹌鹑 所說,sum 接受一個可迭代的對象作為參數,至於這個例子中的可迭代對象就一個 使用 list comprehension 產生的 list。 那就稍為介紹一下 list comprehension(串列產生式) 好了。 這…

node中利用mysql2插件与数据库进行交互

准备操作 先下载mysql2插件。在控制台中输入 安装成功的样子 例: // 导入模块 const mysql require(mysql2);// 创建与mysql的连接const connection mysql.createConnection({host: localhost,user: root,password:123456,database: test,multipleStatements:…

python生成c语言代码_怎样把Python代码嵌入到C程序

展开全部 这篇文章主要介绍了将Python代码嵌入C程序进行编32313133353236313431303231363533e59b9ee7ad9431333363393731写的实例,尽管通常还是Python代码中调用C程序的情况较多...需要的朋友可以参考下 把python嵌入的C里面需要做一些步骤 安装python程序,这样才能…