WEB开发网
开发学院软件开发Python 简明 Python 教程 -- 第11章 面向对象的编程 阅读

简明 Python 教程 -- 第11章 面向对象的编程

 2007-03-29 11:51:31 来源:WEB开发网   
核心提示: 最重要的是,我们没有专门调用__init__方法,简明 Python 教程 -- 第11章 面向对象的编程(4),只是在创建一个类的新实例的时候,把参数包括在圆括号内跟在类名后面,虽然对象的变量有相同的名称,但是是互不相关的,从而传递给__init__方法,这是这种方法的重要之处

最重要的是,我们没有专门调用__init__方法,只是在创建一个类的新实例的时候,把参数包括在圆括号内跟在类名后面,从而传递给__init__方法。这是这种方法的重要之处。

现在,我们能够在我们的方法中使用self.name域。这在sayHi方法中得到了验证。

给C++/Java/C#程序员的注释

__init__方法类似于C++、C#和Java中的 constructor 。

类与对象的方法

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

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

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

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

使用类与对象的变量

例11.4 使用类与对象的变量

#!/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)

上一页  1 2 3 4 5 6 7 8  下一页

Tags:简明 Python 教程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接