如何解决python中继承的重要性
我已经在python中实现了继承并且代码正在工作,此外,我还尝试了以其他方式做同样的事情,我想知道继承比我第二种做同样的事情有优势的地方。
class A:
def __init__(self,a,b):
self._a = a
self.b = b
def addition(self):
return self._a+self.b
################################### Inheritance ############
class B(A):
def __init__(self,b):
super().__init__(a,b)
print("Protected in B ",self._a)
################################### Doing same work by creating object #################
class D():
def __init__(self,b):
self.a = a
self.b = b
d = A(self.a,self.b)
print(d.addition())
print("Protected in D ",d._a)
我能够以两种方式调用A类的受保护成员。 A的任何成员都可以通过两种方式访问,因此,为什么继承很重要。在哪种情况下,只有继承会起作用而不能创建对象?
解决方法
我不认为您的示例展示了继承的力量。
- 第二个示例看起来并不像OOP。除非在构造器 中它是实例变量还是静态变量,否则我很少看到对象创建。
- 并非每个基类都具有子类具有的所有字段。例如,一个
Animal
类可能是超通用的,但是随着更多类似Tiger
的类对其进行扩展,Tiger
将具有更多的Tiger属性(与{{ 1}}类。
第二个示例将集中讨论您的问题,如果您要访问受保护的变量Animal
,则要求您使用self.d
,除非您想执行_a
,然后d = D()
,它不是很受保护。您正在d.a
中创建对象,而在第一个示例中仍在设置类的蓝图。那可能不是您想要做的,因为创建对象的第二个示例看起来像是驱动程序类。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。