Python class self


В материале рассмотрено использование python class self и приведен пример создания класса, для которого self является обязательным аргументом.



Python class self — пример создания класса


class Pet:
def __init__(self):
    a = Pet()
    b = Pet()

Фрагмент кода, отвечающий за инициализацию класса.



При определении класса фактически задается функция, которая в дальнейшем может использоваться для создания объектов, как это сделано выше.



Python при выполнении код разбирает его идентифицируя класс, метод и объекты

Pet().__init__(a)


здесь присутствуют три составляющие

Pet() — класс

__init__ — метод

a — объект



Аргумент self позволяет определить объект, с которым выполняются операции. Методы класса общие для всех объектов, атрибуты — нет.


Python работает таким образом, что первый аргумент каждого метода является обращением к объекту.



Добавим в пример атрибут и метод. Атрибут pet_name со значением по умолчанию равным нулю. Значение устанавливается при инициализации. Метод get_length будет возвращать длину pet_name.

class Pet:
def __init__(self, value=0):
   self.pet_name = value
   def get_length(self):
       return(len(self.pet_name))


Если теперь создать объект класса

d = Pet('Cat')



Python выполнит:

Pet().__init__(d, 'Cat')



При обращении к методу:

d.get_length()



Python выполнит:

Cat.how_big(d)



За счет self инициализируется определенный объект

Далее пример класса, в скобках определяются параметры, которые будут передаваться при создании объектов. Они будут индивидуальны для каждого.



Методы позволяют присваивать значения. Через self передается содержимое переменных.

class Pet:
def __init__(self, pet_name, food=None, things_to_do=[]):
    self.name = pet_name
    self.dob = food
    self.times = things_to_do

jefrey = Cat('jefrey james', 'milk', ['run', 'sit'])

>> jefrey.name

'jefrey james'



Структура объектов таким образом получается общая, при этом каждый объект имеет уникальные характеристики.  При инициализации могут задаваться значения по умолчанию.



Читайте про конструкцию if __name__ == '__main__' и её использование в коде.

Сказать спасибо