Dekorator @property i błąd 'AttributeError: can't set attribute'

0

Hej,

Mój kod:

class Computer:
    mother_board = 'Lenovo DRF-789'

    def __init__(self, brand_name, cpu, hard_drive_size, ram):
        self.brand_name = brand_name
        self.cpu = cpu
        self.hard_drive_size = hard_drive_size
        self.ram = ram

    def __str__(self) -> str:
        return 'Brand: {}, cpu: {}, hard drive: {} GB, RAM memory: {} MB'.format(self.brand_name, self.cpu,
                                                                                 self.hard_drive_size, self.ram)

    def __repr__(self) -> str:
        return 'Computer({}, {}, {}, {})'.format(self.brand_name, self.cpu, self.hard_drive_size, self.ram)

    @property
    def cpu(self):
        return self.cpu

    @cpu.setter
    def cpu(self, new_cpu):
        self.cpu = new_cpu

computer = Computer('Dell', 'i5', 1024, 4096)
print(computer)

I mam błąd:

self.cpu = new_cpu
  [Previous line repeated 493 more times]
RecursionError: maximum recursion depth exceeded

Dlaczego?

3

W linijce self.cpu = cpu w __init__ jest już używany setter, który wywołuje sam siebie.
Rozwiązaniem jest nazwanie atrybutu np. _cpu, żeby uniknąć konfliktu nazw.

0

Ok, dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1