Saya belajar dan berlatih OOP dengan Python, melakukan beberapa latihan dari program MIT. Saya mulai dengan bagian ini yang akan menghitung jumlah bulan yang dibutuhkan untuk membayar uang muka sebuah rumah. Saya mendapatkan kesalahan ini: objek 'House_hunting' tidak memiliki atribut 'number_of_months'.

class House_hunting:

    def __init__(self, total_cost, portion_saved, annual_salary):
        self.total_cost = (total_cost)
        self.portion_saved = float(portion_saved)
        self.annual_salary = (annual_salary)

        portion_down_payment = (self.total_cost)*0.25
        currentsavings = 0
        r = 0.04
        monthly_salary = (self.annual_salary)/12
        number_of_months = 0

        if currentsavings < portion_down_payment:
            savings = currentsavings*r/12 + monthly_salary*float(self.portion_saved)
            number_of_months = number_of_months + 1
        else:
            print(number_of_months)

a = House_hunting(1000000, 0.10, 120000)
print(a.number_of_months())
0
Narsil91 9 Mei 2021, 01:42

1 menjawab

Jawaban Terbaik

Objek Anda tidak memiliki atribut number_of_months, seperti yang dinyatakan dalam pesan kesalahan Anda. Saat ini Kelas Anda hanya memiliki variabel yang digunakan dalam inisialisasi, tetapi kemudian dibuang. Untuk menyimpan jumlah bulan yang dihitung, Anda harus menyesuaikan kode Anda, sehingga terlihat seperti ini.

class House_hunting:

    def __init__(self, total_cost, portion_saved, annual_salary):
        self.total_cost = (total_cost)
        self.portion_saved = float(portion_saved)
        self.annual_salary = (annual_salary)

        portion_down_payment = (self.total_cost)*0.25
        currentsavings = 0
        r = 0.04
        monthly_salary = (self.annual_salary)/12
        self.number_of_months = 0

        if currentsavings < portion_down_payment:
            savings = currentsavings*r/12 + monthly_salary*float(self.portion_saved)
            self.number_of_months = self.number_of_months + 1
        else:
            print(self.number_of_months)

a = House_hunting(1000000, 0.10, 120000)
print(a.number_of_months)

Perhatikan juga bahwa () tidak diperlukan, karena Anda langsung mengakses atribut, dan tidak memanggil fungsi.

0
monamona 9 Mei 2021, 01:08