在python中,我可以定义两个类
parent
和
child
,其中子类从父类继承。然后在
小孩
我可以用
self
并且可以访问父类中存在的任何方法(以及继承树中可能存在的任何其他父类),只要该名称在子类中未被重写。
这样做有什么注意事项吗?推荐的方法只是用来
super()
?
代码示例:
class parent:
def add_stars(self, str):
return '***'+str+'***'
class child(parent):
def print_something(self):
print(self.add_stars("Bacon"))
[In Console]
>>> c = child()
>>> c.add_stars("Wow")
'***Wow***'
>>> c.print_something()
'***Bacon***'
编辑:
将根据评论中的讨论为以后遇到的任何人添加更清晰的内容。让我困惑的是,这是另一种写作方式
小孩
获取相同功能的类将使用
超级()
:
class child(parent):
def print_something(self):
print(super().add_stars("Bacon"))
这是一样的,只要
小孩
不定义名为
add_stars
也。如果该方法确实存在于
小孩
然后
自己
而是使用
小孩
类,而
超级()
将跳过
小孩
类,只在超类中查找。此外,两种方法都将使用相同的方法分辨率顺序。我想知道的是,使用
自己
正如我在示例中所做的,您通常在什么时候使用
super
代替,等等?
这在下面和评论中得到了回答。