当我尝试将基类扩展到子类时,它无法正常工作
它显示错误
B1 = B("adnan", 25, "男性") 类型错误:对象()不带参数
这是我的代码:
class A:
def letter(self,name,age):
self.name=name
self.age=age
class B(A):
def farhan(self,gender):
self.gender=gender
b1=B("adnan",25,"male")
print(b1.name,b1.age,b1.gender)
您的所有类都没有用于初始化类的__init__
方法。当你这样做时:B("adnan",25,"male")
,它被转换为对B.__init__
的调用:
B.__init__(<object of type B>, "adnan", 25, "male")
类object
提供的__init__
的默认实现不带参数,这正是错误所说的。A
继承自object
(issubclass(B, object) == True
),因此其默认__init__
方法与object
相同。
你可以试试这个:
class A:
def __init__(self, name, age):
self.name=name
self.age=age
class B(A):
def __init__(self, name, age, gender):
super().__init__(name, age) # initialise parent
self.gender = gender
当你写类似的东西时
b1 = B("adnan", 25, "male")
您正在创建类"B"的新实例。执行此操作时,将调用该类的__init__
方法。一个可能的解决方案是:
class B(A):
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
你需要提高你的Python OOP技能!一个很好的来源是 https://realpython.com/python3-object-oriented-programming/