«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Методы экземпляра и класса в Python: когда следует использовать «self» и «cls»?

Методы экземпляра и класса в Python: когда следует использовать «self» и «cls»?

Опубликовано 9 ноября 2024 г.
Просматривать:901

  Instance vs. Class Methods in Python: When Should You Use \

Погружение в нюансы методов классов и экземпляров: Beyond Self vs. Cls

Предложение по расширению Python (PEP) 8 предлагает использовать «self» в качестве первого аргумента в методах экземпляра и «cls» в качестве первого аргумента в методах класса. Это различие обусловлено различной ролью, которую эти методы играют при работе с экземплярами и классами.

Методы экземпляра: собственное преимущество

Методы экземпляра вызываются в экземплярах сорт. Обычно они взаимодействуют с конкретными атрибутами и поведением этого конкретного экземпляра. Первым параметром этих методов является self, который представляет экземпляр, в котором вызывается метод.

Например, следующий класс определяет метод экземпляра «представить»:

class Inst:
    def __init__(self, name):
        self.name = name

    def introduce(self):
        print("Hello, I am %s, and my name is %s" % (self, self.name))

Когда мы создаем экземпляр класса Inst и вызываем его метод "introduce", Сам экземпляр передается как параметр self, что позволяет нам получить доступ к его атрибутам (в данном случае атрибуту "name").

Методы класса: использование Cls

С другой стороны, методы класса работают с самим классом, а не с отдельными экземплярами. Они позволяют нам изменять или проверять структуру или поведение класса. Первый параметр этих методов — cls, который представляет класс, в котором вызывается метод.

Следующий пример иллюстрирует метод класса:

class Cls:
    @classmethod
    def introduce(cls):
        print("Hello, I am %s!" % cls)

Этому методу не требуется экземпляр, поскольку он не взаимодействует с конкретными атрибутами объекта. Вместо этого он работает с самим классом, предоставляя информацию о его структуре.

Методы класса особенно полезны при наследовании от родительского класса, поскольку они позволяют дочернему классу изменять или расширять поведение родительского класса. Например, следующий подкласс переопределяет метод «introduce» класса Cls:

class SubCls(Cls):
    pass

SubCls.introduce()
# outputs: Hello, I am 

Используя «cls» в качестве первого параметра, метод «introduce» можно вызвать непосредственно в подклассе, что позволяет ему определять свое собственное поведение при по-прежнему имеет доступ к свойствам, унаследованным от родительского класса.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3