# 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 ```