и посмотреть медиа
Code on a Napkin - Python coding
и посмотреть медиа
Channel about programming in Python and other languages. Simple explanations and codes.
Channel about programming in Python and other languages. Simple explanations and codes.
AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.
Resource for those interested in programming. Focus on Python, but covers other topics as well. Simple examples and breakdowns.
Знаете ли вы, что @property заменяет функцию дескриптором? @property – это не отдельное ключевое слово для геттеров, а обычный декоратор. Он берет функцию и заменяет ее объектом property: примерно как если бы в классе написали name = property(name). Поэтому в User.__dict__["name"] лежит уже не функция, а дескриптор, который Python вызывает при обращении к u.name. class User: def __init__(self, name): self._name = name @property def name(self): return self._name @name.setter def name(self, value): self._name = value u = User("Alice") print(u.name) # Alice u.name = "Bob" print(u.name) # Bob То же поведение можно записать явно через property(): class User: def __init__(self, name): self._name = name def get_name(self): return self._name def set_name(self, value): self._name = value name = property(get_name, set_name) u = User("Alice") print(u.name) # Alice print(type(User.__dict__["name"])) # u.name = "Bob" print(u.name) # Bob В User.__dict__["name"] лежит объект property. При чтении u.name Python находит его, видит __get__ – и вызывает. При записи u.name = ... – вызывает __set__. Если сеттер не определён, __set__ бросает исключение: class User: def __init__(self, name): self._name = name @property def name(self): return self._name u = User("Alice") print(u.name) # Alice u.name = "Bob" # AttributeError: property 'name' of 'User' object has no setter property – не отдельная конструкция языка для геттеров и сеттеров. Это встроенный дескриптор: объект с __get__, __set__, __delete__. Поэтому в Python эта задача решена через общий механизм атрибутов, а не через отдельное ключевое слово. В следующий раз – super() и MRO: где Python ищет атрибуты при наследовании. Код на салфетке x Кусочки кода
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!