- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
@dataclass(slots=True)
class Govno:
govno_index: int
def patch(self, indices_dict: Dict[int, int]) -> None:
new_index = indices_dict[self.govno_index]
self.govno_index = new_index
@dataclass(slots=True)
class Mocha:
mocha_index: int
def patch(self, indices_dict: Dict[int, int]) -> None:
new_index = indices_dict[self.govno_index]
self.govno_index = new_index
Метод «patch» был скопипащен из класса «Govno» в класс «Mocha». Тайпчекер никаких ошибок не показывал; все типы были выведены корректно.
А в рантайме всё упало, что и неудивительно!
По-умолчанию объекту можно насрать в произвольный атрибут: «obj.foo = 42» эквивалентно (с оговорками и в отсутствии перегрузки __getattribute__) «obj.__dict__['foo'] = 42».
Слоты позволяют жёстко зафиксировать возможные атрибуты объекта на этапе описания класса, тем самым:
1) Запретить присваивание любым другим атрибутам, кроме перечисленных в кортеже __slots__ класса;
2) Уменьшить занимаемую объектами память (для «слотовых» объектов не создаётся словарь __dict__ с соответствующим оверхедом);
3) Увеличить скорость доступа к атрибутам объекта, причём значительно (вместо поиска в словаре по названию ключа происходит быстрое разрешение по номеру слота).
Назовите статически типизированный, компилируемый в нативный код язык, в котором можно вызвать несуществующий метод и не упасть
Я такой называю несуществующим, если там можно несуществующий символ привести к функции, а потом еще и вызвать.
Запомнить очень легко: «__getattr__» короче, поэтому в него попадает меньше вызовов (только те ключи, которые не нашлись в объекте), а «__getattribute__» длиннее, поэтому ловит все обращения к атрибутам.
Warning Even the higher-level file copying functions (shutil.copy(), shutil.copy2()) cannot copy all file metadata.
On POSIX platforms, this means that file owner and group are lost as well as ACLs.
блядь
shutil.copyfileobj(fsrc, fdst[, length])
Copy the contents of the file-like object fsrc to the file-like object fdst. The integer length, if given, is the buffer size. In particular, a negative length value means to copy the data without looping over the source data in chunks; by default the data is read in chunks to avoid uncontrolled memory consumption. Note that if the current file position of the fsrc object is not 0, only the contents from the current file position to the end of the file will be copied.
До речи, пайшарм прекрасно это хендлит
https://i.postimg.cc/VLh1DzMC/image.png
Пользуйтесь нормальными инструментами
Поддерживаю. «Питон» не нужен.
А е-клипса от других деятелей?
Эклипс такое же тормозное говно как и JB, просто еще и нихуя не умеет без сорока девяти плагинов
И кстати если бы они написали всё на С++, то оно летало бы
Другой вопрос, что питухон не нужен (как правильно и сказал Файк): подобной проблемы в нормальном ЯП бы не случилось
Я за то, чтобы всякие стат. анализаторы шли отдельной хуйней типа LSP, а не встраивать это намертво в тормозное жабаговно
> Другой вопрос, что питухон не нужен (как правильно и сказал Файк)
С этим я не спорю