На самом деле это два вопроса:
1) В чем заключается логика того факта, что при объявлении класса python переменные по умолчанию равны static, а методы - экземпляру по умолчанию?Я знаю, что могу объявить переменные в _ init _ или добавить @staticmethod или @classmethod к методам, чтобы перевернуть их на другую сторону, но мне кажется (по крайней мере, мне), что они оба последовательно по умолчанию в одну сторонуили другой (например, как Java / C #) будет иметь гораздо больше смысла.
Есть ли какой-то очень распространенный вариант использования, который я пропускаю?Я знаю, что реализация как таковая, но, конечно, это должно было быть дизайнерское решение, чтобы иметь такой способ, с методами по умолчанию для экземпляра, но с переменными по умолчанию с точностью до наоборот.
2) Есть ли способобъявить переменные экземпляра в классах Python, не помещая их в _ init _ ?
Я знаю, что могу поместить их в _ init _ , но для этого потребуются любые подклассы, которым нужен собственный _ init _ , либо:
A) объявить их самому или
B) вручную вызвать базовые классы _ init _ ,
, оба из которых - боль.Я мог бы сделать это, но это кажется грязным;подклассам что-то должно требовать ничего, кроме (BaseClass) в объявлении класса для работы, им не нужно вызывать что-то особенное в своих собственных _ init _ , чтобы функциональность BaseClass работала полностью