我花了一个愉快的星期六来深入研究Python对象,并提出了一个简单的问题,这个问题不是令人兴奋,而是有点好奇
假设我有一个基类和一个子类as follows:
class Person:
def __init__(self, first, last):
self.firstname = first
self.lastname = last
def __str__(self):
return self.firstname + " " + self.lastname
class Employee(Person):
def __init__(self, first, last, staffnum):
super().__init__(first, last)
self.staffnumber = staffnum
x = Person("Marge", "Simpson")
y = Employee("Homer", "Simpson", "1007")
我在看员工类
给定:
我们使用的是super()
,其中包含参数,
为什么在python中__init__
仍然要求我们键入first, last
?
这难道不应该从我们使用super推断出来吗?似乎是额外的重复打字。作者这样做的理由是什么
原因是您可以进一步自定义子类。在您的示例中,当您仍要输入
first
和last
时,会比较麻烦,因为您必须键入两次,如下所示:但是,您可能希望自动填充其中一些值。在本例中,可能是一个
FamilyMember
类,其中姓氏是公共的在这种情况下,您只需要为
FamilyMember
输入first
变量,last
变量将自动填充相关问题 更多 >
编程相关推荐