Files
ailearning/docs/da/104.md
2020-10-19 21:08:55 +08:00

160 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 定义 class
## 基本形式
`class` 定义如下:
```py
class ClassName(ParentClass):
"""class docstring"""
def method(self):
return
```
* `class` 关键词在最前面
* `ClassName` 通常采用 `CamelCase` 记法
* 括号中的 `ParentClass` 用来表示继承关系
* 冒号不能缺少
* `""""""` 中的内容表示 `docstring`,可以省略
* 方法定义与函数定义十分类似,不过多了一个 `self` 参数表示这个对象本身
* `class` 中的方法要进行缩进
In [1]:
```py
class Forest(object):
""" Forest can grow trees which eventually die."""
pass
```
其中 `object` 是最基本的类型。
查看帮助:
In [2]:
```py
import numpy as np
np.info(Forest)
```
```py
Forest()
Forest can grow trees which eventually die.
Methods:
```
In [3]:
```py
forest = Forest()
```
In [4]:
```py
forest
```
Out[4]:
```py
<__main__.Forest at 0x3cda358>
```
## 添加方法和属性
可以直接添加属性(有更好的替代方式):
In [5]:
```py
forest.trees = np.zeros((150, 150), dtype=bool)
```
In [6]:
```py
forest.trees
```
Out[6]:
```py
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]:
```py
forest2 = Forest()
```
`forest2` 没有这个属性:
In [8]:
```py
forest2.trees
```
```py
---------------------------------------------------------------------------
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]:
```py
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]:
```py
forest = Forest()
forest.grow()
forest.number(12)
```
```py
the tree is growing!
there are 12 trees.
```