Язык программирования Python

Метод класса


Если статический метод имеет свои аналоги в C++ и Java, то метод класса основан на том, что в Python классы являются объектами. В отличие от статического метода, в метод класса первым параметром передается объект-класс. Вместо self для подчеркивания принадлежности метода к методам класса принято использовать cls.

Пример использования метода класса можно найти в модуле tree пакета nltk (Natural Language ToolKit, набор инструментов для естественного языка). Ниже приведен лишь фрагмент определения класса Tree (базового класса для других подклассов). Метод convert класса Tree определяет процедуру преобразования дерева одного типа в дерево другого типа. Эта процедура абстрагируется от деталей реализации конкретных типов, описывая обобщенный алгоритм преобразования:

class Tree: # ... def convert(cls, val):

if isinstance(val, Tree): children = [cls.convert(child) for child in val] return cls(val.node, children) else: return val convert = classmethod(convert)

Пример использования (взят из строки документации метода convert()):

>>> # Преобразовать tree в экземпляр класса Tree >>> tree = Tree.convert(tree) >>> # " " " " " ParentedTree >>> tree = ParentedTree.convert(tree) >>> # " " " " " MultiParentedTree >>> tree = MultiParentedTree.convert(tree)

Метод класса позволяет более естественно описывать действия, которые связаны в основном с классами, а не с методами экземпляра класса.



Содержание раздела