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

时间:2019-05-11 19:56:35

标签: python-3.x

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

显示错误
b1 = B(“ adnan”,25,“ male”) TypeError:object()不带参数

这是我的代码

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)

2 个答案:

答案 0 :(得分:1)

您的任何一个类都没有用于初始化该类的__init__方法。当您执行以下操作时:B("adnan",25,"male"),它将转换为对B.__init__的调用:

B.__init__(<object of type B>, "adnan", 25, "male")

__init__提供的object的默认实现不带任何参数,这正是错误的意思。 A继承自objectissubclass(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

答案 1 :(得分:0)

写类似的东西

uploadImage(): Promise<any> {
   const formData = new FormData();
   formData.append('image', this.imageForm.get('image').value);
   return this.http.post(this.uploadImageURL, formData)
     .toPromise()
     .catch((e) => {
       // error
   });
}

您正在创建类'B'的新实例。这样做时,您正在调用该类的b1 = B("adnan", 25, "male") 方法。可能的解决方案如下:

__init__

您需要重新掌握Python OOP技能!一个不错的来源是https://realpython.com/python3-object-oriented-programming/