我想Person 在類中重用基類建構式Instructor但添加額外的引數degree。不知何故,它不起作用。請查看更多資訊:
class Person(object):
def __init__(self, name = 'Jane Doe', year = 2000):
self.n = name
self.y = year
class Instructor(Person):
def __init__(self, name, year, degree=12):
super().__init__(name, year) #call base class ctor
self.degree = degree;
盡管如此,當我這樣做時:
sammy = Instructor("John") # i want to set John as name
我收到以下錯誤:
Exception has occured: TypeError __init__() missing 1 required positional arguments year
由于年份和學位具有默認值,因此我不理解該錯誤。
uj5u.com熱心網友回復:
正如評論所暗示的,您必須為Instructor's設定默認值init。在創建 ' 建構式的物件時,會Instructor在Instructor' 建構式之前呼叫Person。所以它不關心Person's 建構式中的默認值。
class Person(object):
def __init__(self, name = 'Jane Doe', year = 2000):
self.n = name
self.y = year
class Instructor(Person):
def __init__(self, name = 'Jane Doe', year = 2000, degree=12):
super().__init__(name, year) #call base class ctor
self.degree = degree;
然后:
sammy = Instructor("John")
無一例外地運行。
uj5u.com熱心網友回復:
第一個__init__運行的是Instructor's init。這就是你得到錯誤的原因。為 year 設定默認值將毫無例外地運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/436908.html
