擅长:python、mysql、java
<p>以下两个方法是等效的(假设从未重写“Name”方法):</p>
<pre><code>class Employee(Person):
def __init__(self, first, last, staffnum):
Person.__init__(self, first, last)
self.staffnumber = staffnum
def getEmployee(self):
return Person.Name(self) + self.staffnumber
class Employee(Person):
def __init__(self, first, last, staffnum):
Person.__init__(self, first, last)
self.staffnumber = staffnum
def getEmployee(self):
return self.Name() + self.staffnumber
</code></pre>
<p>在第二个例子中,当自我。姓名()时,类的实例被“绑定”到函数,因此不需要传递第一个参数。你知道吗</p>
<p>因为<strong>init</strong>在Employee子类中被重写,所以不能调用self.<strong>init</strong>(first,last)。然后,您将呼叫Employee.<strong>init</strong>(self,*args)而不是Person.<strong>init</strong>(self,*args)。这要么会创建一个无限递归循环,要么会得到一个参数错误。你知道吗</p>
<p>一般来说,重写方法时,必须在子类中使用以下表示法。ParentClass.methodname方法(self,*args,**kwargs)。你打电话的原因自我。姓名()是因为名称尚未被重写。你知道吗</p>
<p>我在这里重复我自己。这是结晶,还是我把你弄糊涂了?你知道吗</p>