Почему в Python так легко перезаписать метод класса?
Как я могу защитить методы класса Python от ошибочного изменения? Есть ли какая-то "защита от записи"?
Пример:
class bar():
def blob(self):
return 2
if __name__ == "__main__":
foo = bar()
print(foo.blob()) # Returns 2
foo.blob = 1 # Overwrites the method "blob" without a warning!
# foo.blob returns 1, foo.blob() is not callabele anymore :(
foo.blib = 1 # Is also possible
print(foo.blob)
print(foo.blob())
Когда я вызываю этот скрипт, возвращается:
2
1
Traceback (most recent call last):
File "blob.py", line 18, in <module>
print(foo.blob())
TypeError: 'int' object is not callable
Я бы предпочел получить предупреждение.