как работает данный сценарий?

столкнулся с препятствиями при изучении ООП python'а. до меня не доходит, почему этот код работает:

class Smth:
   
    def __init__(self, x):
        self.x = x

    def num(self):
        print(self.x)

p = Smth(5)

p.num()

не понимаю зачем здесь нужен метод init и зачем мы пишем self.x = x всем ответившим огромное спасибо!


Ответы (1 шт):

Автор решения: alex
class Smth:  # Это объявление класса или типа
   
    def __init__(self, x): # Как ужe написал @entithat
                           # эта функция запускается, когда объявляется
                           # переменная p ( ниже )
        self.x = x         # Здесь мы присвоили свойству значение 5
                           # при объявлении переменной p ( чуть ниже )
    def num(self):         # Это метод. Если у нас есть переменная
        print(self.x)      # типа Smth, значит все переменные
                           # или экземпляры могут вызвать данный метод 

p = Smth( 5 ) # В этой строке мы говорим, что будет переменная 
              # p типа Smth  
p.num()       # вызывается метод класса и печатается свойство p ( т.е. 5 )
→ Ссылка