<p>您需要使用类似于:</p>
<pre><code>class Home(Edifice):
def __init__(self, storeys, area, bedrooms):
super().__init__(storeys, area)
self.__bedrooms = bedrooms
super(Home, self).show_info()
print("For human habitation: ", bedrooms, "bedrooms")
h = Home(2,3000,3)
Storeys: 2 , floor area: 3000
For human habitation: 3 bedrooms
</code></pre>
<p>要实际重写该方法,使用<a href="https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods">super</a>调用父级方法非常简单:</p>
^{pr2}$
<p>如果使用python2,语法略有不同,还应继承from object以支持新的样式类:</p>
<pre><code>class Edifice(object):
def __init__(self,storeys,area):
self.__storeys = storeys
self.__area = area
def show_info(self):
print('Storeys:{}, floor area: {}'.format(self.__storeys,self.__area))
class Home(Edifice):
def __init__(self, storeys, area, bedrooms):
super(Home, self).__init__(storeys, area)
self.__bedrooms = bedrooms
def show_info(self):
super(Home, self).show_info()
print("For human habitation: {} bedrooms.".format(self.__bedrooms)
h = Home(2,3000,3)
h.show_info()
</code></pre>
<p>不确定您所说的可执行文件是什么意思,但您可以在文件中使用<code>if __name__==__main__</code>,并且只有在运行该文件时才会执行代码:</p>
<pre><code>if __name__=="__main__":
h = Home(3,3000,2)
h.show_info()
</code></pre>
<p>如果您只想导入并运行另一个<code>.py</code>文件中的代码:</p>
<pre><code>from whatever import Home
h = Home(3,3000,2)
h.show_info()
</code></pre>
<p>无论哪个模块都必须在同一个目录中或在您的<code>PYTHONPATH</code>中,有几种不同的方法可以添加到您的路径中,本文讨论了<a href="https://stackoverflow.com/questions/3402168/permanently-add-a-directory-to-pythonpath">question.</a></p>
<p>对于您的编辑,我将使消息成为一个属性,并在第二个实例中更改它:</p>
<pre><code>class Home(Edifice):
def __init__(self, storeys, area, bedrooms):
super().__init__(storeys, area)
self.__bedrooms = bedrooms
self.message = "For human habitation: {} bedrooms"
def show_info(self):
super(Home, self).show_info()
print("{}".format(self.message.format(self.__bedrooms)))
</code></pre>
<p>然后:</p>
<pre><code>from module import Home
h = Home(3, 3000, 2)
h.show_info()
h2 = Home(2, 4000, 5)
h2.message = "Second Human habitation: {} bedrooms"
h2.show_info()
</code></pre>
<p>输出:</p>
<pre><code>Storeys: 3 , floor area: 3000
For human habitation: 2 bedrooms
Storeys: 2 , floor area: 4000
Second Human habitation: 5 bedrooms
</code></pre>
<p>无需损坏,它就简单得多:</p>
<pre><code>class Home(Edifice):
def __init__(self, storeys, area, bedrooms):
super().__init__(storeys, area)
self.bedrooms = bedrooms
self.message = "For human habitation: {} bedrooms".format(self.bedrooms)
def show_info(self):
super(Home, self).show_info()
print(self.message)
</code></pre>
<p>我们只需设置实例中的全部消息:</p>
<pre><code>from module import Home
h = Home(3, 3000, 2)
h.show_info()
h2 = Home(2, 4000, 5)
h2.message = "Second Human habitation: {} bedrooms".format(h2.bedrooms)
h2.show_info()
</code></pre>