Skip to content

Development #102

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions 209.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@

在子类`Girl`中,只写了一个方法`get_name()`,但是因为是继承了`Person`,那么`Girl`就全部拥有了`Person`中的方法和属性。子类`Girl`的方法`get_name()`中,使用了属性`self.name`,但是在类`Girl`中,并没有什么地方显示创建了这个属性,就是因为继承`Person`类,在父类中有初始化函数。所以,当使用子类创建实例的时候,必须传一个参数`cang = Girl("canglaoshi")`,然后调用实例方法`cang.get_name()`。对于实例方法`cang.height(160)`,也是因着继承的缘故使然。

在上面的程序中,子类`Gril`里面没有与父类`Person`重复的属性和方法,但有时候,会遇到这样的情况。
在上面的程序中,子类`Girl`里面没有与父类`Person`重复的属性和方法,但有时候,会遇到这样的情况。

class Girl(Person):
def __init__(self):
Expand Down Expand Up @@ -166,7 +166,7 @@ Python 3中也有异常:

##调用覆盖的方法

承接前面的问题和程序,可以对子类`Gril`做出这样的修改。
承接前面的问题和程序,可以对子类`Girl`做出这样的修改。

class Girl(Person):
def __init__(self, name):
Expand Down Expand Up @@ -207,7 +207,7 @@ Python 3中也有异常:
def get_name(self):
return self.name

仅仅修改一处,将`Person.__init__(self, name)`去掉,修改为`super(Girl, self).__init__(name)`。实行程序后,显示的结果与以前一样。
仅仅修改一处,将`Person.__init__(self, name)`去掉,修改为`super(Girl, self).__init__(name)`。执行程序后,显示的结果与以前一样。

关于`super`,有人做了非常深入的研究,推荐读者阅读[《Python’s super() considered super! 》](https://rhettinger.wordpress.com/2011/05/26/super-considered-super/),文中已经探究了`super`的工作过程。读者如果要深入了解,可以阅读这篇文章。

Expand Down