定义 class

基本形式

class 定义如下:

class ClassName(ParentClass):
    """class docstring"""
    def method(self):
        return
  • class 关键词在最前面
  • ClassName 通常采用 CamelCase 记法
  • 括号中的 ParentClass 用来表示继承关系
  • 冒号不能缺少
  • """""" 中的内容表示 docstring,可以省略
  • 方法定义与函数定义十分类似,不过多了一个 self 参数表示这个对象本身
  • class 中的方法要进行缩进
In [1]:
class Forest(object):
    """ Forest can grow trees which eventually die."""
    pass

其中 object 是最基本的类型。

查看帮助:

In [2]:
import numpy as np
np.info(Forest)
 Forest()

Forest can grow trees which eventually die.


Methods:

In [3]:
forest = Forest()
In [4]:
forest
Out[4]:
<__main__.Forest at 0x3cda358>

添加方法和属性

可以直接添加属性(有更好的替代方式):

In [5]:
forest.trees = np.zeros((150, 150), dtype=bool)
In [6]:
forest.trees
Out[6]:
array([[False, False, False, ..., False, False, False],
       [False, False, False, ..., False, False, False],
       [False, False, False, ..., False, False, False],
       ..., 
       [False, False, False, ..., False, False, False],
       [False, False, False, ..., False, False, False],
       [False, False, False, ..., False, False, False]], dtype=bool)
In [7]:
forest2 = Forest()

forest2 没有这个属性:

In [8]:
forest2.trees
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-42e6a9d57a8b> in <module>()
----> 1 forest2.trees

AttributeError: 'Forest' object has no attribute 'trees'

添加方法时,默认第一个参数是对象本身,一般为 self,可能用到也可能用不到,然后才是其他的参数:

In [9]:
class Forest(object):
    """ Forest can grow trees which eventually die."""
    def grow(self):
        print "the tree is growing!"
        
    def number(self, num=1):
        if num == 1:
            print 'there is 1 tree.'
        else:
            print 'there are', num, 'trees.'
In [10]:
forest = Forest()

forest.grow()
forest.number(12)
the tree is growing!
there are 12 trees.