Я определил простой класс. Удивительная вещь: я могу назначать атрибуты, которые не были определены в определении класса.
- Как это возможно?
- Как я могу предотвратить это?
Посмотрите, что я имею в виду, это мой простой класс:
class Dog:
def __init__(self,name):
self.name=name
Конечно, теперь я могу создать экземпляр объекта: dog = Dog('Fido')
Печать Print(dog.name)
дает 'Fido'
.
Но теперь я просто могу назначить свой новые атрибуты объектной собаки, хотя я не включил их в определение класса.
Например: dog.mood="happy"
работает. Когда я печатаю Print(dog.mood)
, я получаю 'happy'
, это значит, что это работает. Почему это возможно и как я могу предотвратить присвоение значений таким атрибутам, как "настроение", даже если я не определил их в своем определении класса собаки?