定义 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.