Member 9491754 Ответов: 1

Ошибка при выполнении кода с использованием альтернативного конструктора


Я могу вызывать методы , используя этот альтернативный конструктор, но не могу вызвать pay и email, он говорит: "объект employee не имеет атрибута pay". есть идеи, почему это происходит

Что я уже пробовал:

class employee:
    def __init__(self, name , age ,sal):
        self.name= name
        self.age=age
        self.sal=sal

    def creds(self):
        return(self.name, self.age, self.sal)

    def bio(self):
        print(self.name + str(self.age))


    @classmethod
    def alternatecontructor(cls,str):
        first,last,pay = str.split("-")
        return cls (first,last,pay)

emp1= employee("ali",20,20000)

str1 = "ibbi-26-50000"
newobj= employee.alternatecontructor(str1)
print(newobj.bio())
print(newobj.pay)

1 Ответов

Рейтинг:
1

Richard MacCutchan

То alternatecontructor метод не является фактическим конструктором. И атрибуты, которые он создает, не являются частью вашего класса.

Когда вы вызываете этот метод он возвращает новый employee объект, созданный со значениями из строки. Однако атрибуты класса-это те, которые указаны в фактическом конструкторе, т. е. name, age и sal Поэтому измените свой код, чтобы использовать правильное имя атрибута таким образом:

print(newobj.sal)