Siema,
Tworze swój pierwszy projekt i udało mi się już natrafić na problem, z którym nie mogę sobie poradzić.
Program przy utworzeniu obiektu klasy Dog wyrzuca mi **AttributeError **o treści **'Dog' object has no attribute '_name' **ale nie do końca rozumiem czemu ten błąd się pojawia.
Z góry dziękuje za pomoc.
from abc import ABC, abstractclassmethod
import random as rd
class Animal(ABC):
def __init__(self, name, date_of_birth, gender, is_vaccinated, is_sterilized):
self._id = str(rd.randrange(1, 100)) + self.name + str(rd.randrange(1, 100))
self.name = name
self.date_of_birth = date_of_birth
self.gender = gender
self.is_vaccinated = is_vaccinated
self.is_sterilized = is_sterilized
@property
def name(self):
return self._name
@name.setter
def name(self, value):
if self._name.isalpha():
self._name = value
else:
print('Name of your pupil should contain only alphabet letters.')
@property
def date_of_birth(self):
return self._date_of_birth
@date_of_birth.setter
def date_of_birth(self, value):
self._date_of_birth = value
@property
def gender(self):
return self._gender
@gender.setter
def gender(self, value):
if self.gender == 'male' or self.gender == 'female':
self._gender = value
else:
print('Gender must be of type male or female.')
@property
def is_vaccinated(self):
return self._is_vaccinated
@is_vaccinated.setter
def is_vaccinated(self, value):
if self.is_vaccinated == 'yes' or self.is_vaccinated == 'no':
self._is_vaccinated = value
else:
print('Choose yes or no.')
@property
def is_sterilized(self):
return self._is_sterilized
@is_sterilized.setter
def is_sterilized(self, value):
if self.is_sterilized == 'yes' or self.is_sterilized == 'no':
self._is_sterilized = value
else:
print('Choose yes or no.')
def __str__(self):
result = self.__class__().__name__() + '\n'
result += self.name + '\n'
result += self.date_of_birth + '\n'
result += self.gender + '\n'
result += self.is_vaccinated + '\n'
result += self.is_sterilized + '\n'
return result
class Dog(Animal):
def __init__(self, name, date_of_birth, gender, is_vaccinated, is_sterilized, dog_sound='HauHau'):
super().__init__(name, date_of_birth, gender, is_vaccinated, is_sterilized)
self.dog_sound = dog_sound
def __str__(self):
return super().__str__() + self.dog_sound
doggo = Dog('Tofik', 20102011, 'male', 'yes', 'yes')