Это потому, что finst
является просто псевдонимом для класса Foo
, а i
и j
являются переменными класса, а не переменными экземпляра.Если вы объявили их как переменные экземпляра:
class Foo:
def __init__(self):
self.i = 1
self.j = 2
Тогда ваш код вызовет ошибку.
Чтобы ответить на ваш вопрос, нет, вы должны вызвать конструктор для создания экземпляра.