首页 > 解决方案 > 如何避免在子类中重复调用实例变量?

问题描述

我想知道在创建子类时,Python 中是否有办法摆脱对实例变量的重复调用。例如:

class Name:
    def __init__(self,first,last):
        self.first = first
        self.last = last



    def __str__(self):
        return f"Users first name is : {self.first}, Users last name is: {self.last}"


    def __repr__(self):
        return f"first:{self.first}, last:{self.last}"


class Cash(Name):
    def __init__(self,first,last,cash):
        super().__init__(first,last)
        self.cash = cash

    def full(self):
        return f"{self.first},{self.last},{self.cash}"



c1 = Cash("Exa","Cool",200)
print(c1.full())

是否可以从“Name”调用所有实例变量(self.first,self.last...),而不必在“Cash”的构造函数中提及它们

就像是:

class Cash(Name):
    def __init__("all from Name" + new one ("cash" in this example)):
        super().__init__("all from Name")
        self.cash = cash

标签: python-3.xclasssubclass

解决方案


在您的情况下,您可以将Cash类更改为如下所示:

class Cash(Name):
    def __init__(self,*inputs):
        super(Cash,self).__init__(*inputs[:-1])
        self.cash = inputs[-1]

    def full(self):
        return f"{self.first},{self.last},{self.cash}"

但是对于涵盖所有情况的更通用的解决方案,请查看这个类似的问题


推荐阅读