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

560 lines
26 KiB
Markdown
Raw 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.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# super() 函数
```py
super(CurrentClassName, instance)
```
返回该类实例对应的父类对象。
In [1]:
```py
class Leaf(object):
def __init__(self, color="green"):
self.color = color
def fall(self):
print "Splat!"
class MapleLeaf(Leaf):
def change_color(self):
if self.color == "green":
self.color = "red"
def fall(self):
self.change_color()
super(MapleLeaf, self).fall()
```
这里,我们先改变树叶的颜色,然后再找到这个实例对应的父类,并调用父类的 `fall()` 方法:
In [2]:
```py
mleaf = MapleLeaf()
print mleaf.color
mleaf.fall()
print mleaf.color
```
```py
green
Splat!
red
```
回到我们的森林例子,这里我们将森林 `Forest` 作为父类,并定义一个子类 `BurnableForest`
In [3]:
```py
import numpy as np
class Forest(object):
""" Forest can grow trees which eventually die."""
def __init__(self, size=(150,150), p_sapling=0.0025):
self.size = size
self.trees = np.zeros(self.size, dtype=bool)
self.p_sapling = p_sapling
def __repr__(self):
my_repr = "{}(size={})".format(self.__class__.__name__, self.size)
return my_repr
def __str__(self):
return self.__class__.__name__
@property
def num_cells(self):
"""Number of cells available for growing trees"""
return np.prod(self.size)
@property
def tree_fraction(self):
"""
Fraction of trees
"""
num_trees = self.trees.sum()
return float(num_trees) / self.num_cells
def _rand_bool(self, p):
"""
Random boolean distributed according to p, less than p will be True
"""
return np.random.uniform(size=self.trees.shape) < p
def grow_trees(self):
"""
Growing trees.
"""
growth_sites = self._rand_bool(self.p_sapling)
self.trees[growth_sites] = True
def advance_one_step(self):
"""
Advance one step
"""
self.grow_trees()
```
* 将与燃烧相关的属性都被转移到了子类中去。
* 修改两类的构造方法,将闪电概率放到子类的构造方法上,同时在子类的构造方法中,用 `super` 调用父类的构造方法。
* 修改 `advance_one_step()`,父类中只进行生长,在子类中用 `super` 调用父类的 `advance_one_step()` 方法,并添加燃烧的部分。
In [4]:
```py
class BurnableForest(Forest):
"""
Burnable forest support fires
"""
def __init__(self, p_lightning=5.0e-6, **kwargs):
super(BurnableForest, self).__init__(**kwargs)
self.p_lightning = p_lightning
self.fires = np.zeros((self.size), dtype=bool)
def advance_one_step(self):
"""
Advance one step
"""
super(BurnableForest, self).advance_one_step()
self.start_fires()
self.burn_trees()
@property
def fire_fraction(self):
"""
Fraction of fires
"""
num_fires = self.fires.sum()
return float(num_fires) / self.num_cells
def start_fires(self):
"""
Start of fire.
"""
lightning_strikes = (self._rand_bool(self.p_lightning) &
self.trees)
self.fires[lightning_strikes] = True
def burn_trees(self):
"""
Burn trees.
"""
fires = np.zeros((self.size[0] + 2, self.size[1] + 2), dtype=bool)
fires[1:-1, 1:-1] = self.fires
north = fires[:-2, 1:-1]
south = fires[2:, 1:-1]
east = fires[1:-1, :-2]
west = fires[1:-1, 2:]
new_fires = (north | south | east | west) & self.trees
self.trees[self.fires] = False
self.fires = new_fires
```
测试父类:
In [5]:
```py
forest = Forest()
forest.grow_trees()
print forest.tree_fraction
```
```py
0.00284444444444
```
测试子类:
In [6]:
```py
burnable_forest = BurnableForest()
```
调用自己和父类的方法:
In [7]:
```py
burnable_forest.grow_trees()
burnable_forest.start_fires()
burnable_forest.burn_trees()
print burnable_forest.tree_fraction
```
```py
0.00235555555556
```
查看变化:
In [8]:
```py
import matplotlib.pyplot as plt
%matplotlib inline
forest = Forest()
forest2 = BurnableForest()
tree_fractions = []
for i in range(2500):
forest.advance_one_step()
forest2.advance_one_step()
tree_fractions.append((forest.tree_fraction, forest2.tree_fraction))
plt.plot(tree_fractions)
plt.show()
```
![](data:image/png;base64,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
)
`__str__``__repr__``self.__class__` 会根据类型不同而不同:
In [9]:
```py
forest
```
Out[9]:
```py
Forest(size=(150, 150))
```
In [10]:
```py
forest2
```
Out[10]:
```py
BurnableForest(size=(150, 150))
```
In [11]:
```py
print forest
```
```py
Forest
```
In [12]:
```py
print forest2
```
```py
BurnableForest
```