> For the complete documentation index, see [llms.txt](https://bemind.gitbook.io/neural/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bemind.gitbook.io/neural/python/vstroennye-funkcii-python/staticmethod.md).

# staticmethod()

Функция `staticmethod()` в Python используется как декоратор для создания статических методов в классах.

**Назначение**:

* Определить метод класса, который не имеет доступа к экземпляру класса (self) или самому классу (cls).

**Возврат**:

* Возвращает объект статического метода.

**Описание**:

* Принимает функцию в качестве аргумента и преобразует её в статический метод.
* Статические методы не имеют доступа к атрибутам экземпляра или класса.
* Могут быть вызваны как через класс, так и через экземпляр класса.
* Часто используются для группировки связанных функций в пространстве имен класса.

**Примеры**:

1. ***Простой статический метод***
2. ***Статический метод с логикой, не зависящей от состояния класса***
3. ***Использование статического метода внутри класса***

{% tabs %}
{% tab title="1." %}

```python
class MathOperations:
    @staticmethod
    def add(x, y):
        return x + y

print(MathOperations.add(5, 3))  # Выведет: 8
```

{% endtab %}

{% tab title="2." %}

```python
class DateConverter:
    @staticmethod
    def to_dash_format(date):
        return date.replace("/", "-")

print(DateConverter.to_dash_format("2023/06/21"))  # Выведет: 2023-06-21
```

{% endtab %}

{% tab title="3." %}

```python
class Circle:
    @staticmethod
    def pi():
        return 3.14159

    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return self.radius ** 2 * Circle.pi()

circle = Circle(5)
print(circle.area())  # Выведет: примерно 78.53975
```

{% endtab %}
{% endtabs %}

**Использование**:

* Для методов, которые не требуют доступа к состоянию экземпляра или класса.
* Для утилитарных функций, логически связанных с классом.
* Для создания фабричных методов.
* Для организации кода и группировки связанных функций в пространстве имен класса.

Функция `staticmethod()` (или декоратор `@staticmethod`) является важным инструментом в объектно-ориентированном программировании на Python. Она позволяет создавать методы, которые логически связаны с классом, но не требуют доступа к его атрибутам или методам. Это улучшает организацию кода и может сделать его более понятным и модульным.

Важно отметить, что статические методы отличаются от методов класса (создаваемых с помощью `@classmethod`). В то время как статические методы не имеют доступа ни к экземпляру, ни к классу, методы класса получают класс в качестве первого аргумента.
