linux下python学习笔记(十五)

来源:互联网 发布:视频录像软件 编辑:程序博客网 时间:2024/04/28 14:54

之前的例子都是面向过程,从这一篇起进入面向对象。

类和对象是面向对象编程的两个主要方面。类创建一个新类型,而对象是这个类的 实例 。

注意,即便是整数也被作为对象(属于int类),这与C++不同。

对象可以使用普通的 属于 对象的变量存储数据。属于一个对象或类的变量被称为域。对象也可以使用 属于 类的函数来具有功能。这样的函数被称为类的方法。这些术语帮助我们把它们与孤立的函数和变量区分开来。域和方法可以合称为类的属性。

域有两种类型——属于每个实例/类的对象或属于类本身。它们分别被称为实例变量和类变量。

self

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。

 这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。

#!/usr/bin/python
# Filename: simplestclass.py
class Person:
  pass # An empty block
p = Person()
print p

 我们使用class语句后跟类名,创建了一个新的类。这后面跟着一个缩进的语句块形成类体。在这个例子中,我们使用了一个空白块,它由pass语句表示。

接下来,我们使用类名后跟一对圆括号来创建一个对象/实例。我们简单地打印了这个变量的类型。它告诉我们我们已经在__main__模块中有了一个Person类的实例。

我们已经讨论了类/对象可以拥有像函数一样的方法,这些方法与函数的区别只是一个额外的self变量。现在我们来学习一个例子。

#!/usr/bin/python
# Filename: method.py
class Person:
  def sayHi(self):
     print 'Hello, how are you?'
p = Person()
p.sayHi()

这里我们看到了self的用法。注意sayHi方法没有任何参数,但仍然在函数定义时有self。

__init__方法

__init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。注意,这个名称的开始和结尾都是双下划线。

#!/usr/bin/python
# Filename: class_init.py
class Person:
   def __init__(self, name):
      self.name = name
   def sayHi(self):
      print 'Hello, my name is', self.name
p = Person('Swaroop')
p.sayHi()

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

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

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

对象的变量 由类的每个对象/实例拥有。

下一篇将举例解释。