如何在python中将基类扩展到子类并打印子类值?



当我尝试将基类扩展到子类时,它无法正常工作

它显示错误
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/

最新更新