def func():
# statement...
[return]
Каждый Python файл является модулем
Каталог, содержащий модуль, также является модулем
import ${module_name} # module_name - это имя файла модуля, без расширения .py
from ${module_namespace} import ${module_name} # импортирование модуля из пространства имён модуля
Для создания нового класса используется ключевое слово class
, после которого следует имя класса и двоеточие:
class ClassName:
'Документация класса' # строка документации класса
class_suite # тело класса
Примечание
Методы класса отличаются от обычных функций тем, что они должны иметь один обязательный первый аргумент — self
. В соответствии с соглашением этот аргумент обычно называется self
.
Пример:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class Employee:
'Базовый класс всех сотрудников'
emp_count = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.emp_count += 1
def display_count(self):
print(f"Общее количество сотрудников: {Employee.emp_count}")
def display_employee(self):
print(f"Имя: {self.name}, Зарплата: {self.salary}")
``` Выше приведенный пример выводит следующий результат:
> <__main__.Employee object at 0x10d066878>
> __main__.Employee
### Создание экземпляров объектов
В других языках программирования создание экземпляра класса осуществляется с помощью ключевого слова new, но в Python такого ключевого слова нет. Экземпляр класса создаётся аналогично вызову функции.
Ниже показано, как использовать имя класса Employee для создания экземпляров и передачи параметров через метод \_\_init\_\_.
```python
"Создание первого объекта класса Employee"
emp1 = Employee('Зара', 2000)
"Создание второго объекта класса Employee"
emp2 = Employee('Мани', 5000)
``` Доступ к свойствам
Свойства объекта можно получить с помощью точки (.). Чтобы получить доступ к переменной класса, используйте имя класса:
```python
emp1.display_employee()
emp2.display_employee()
print(f"Общее количество сотрудников: {Employee.emp_count}")
``` ### Встроенные атрибуты класса Python
__dict__ : Атрибуты класса (словарь, состоящий из данных класса)
__doc__ : Документация класса
__name__ : Имя класса
__module__ : Модуль, где определён класс (полное имя класса равно '__main__.ClassName', если класс определён в модуле mymod, то __module__ равен mymod)
__bases__ : Все родительские классы данного класса представлены в виде кортежа (включает кортеж всех родительских классов)
### Уничтожение объекта Python (механизмы сборки мусора)
#### Синтаксис
```**del instance**```
Python использует простую технику отслеживания и сборки мусора через счетчики ссылок.
Внутри Python поддерживается учёт всех активных объектов и количества ссылок на каждый из них.
Внутренний счетчик ссылок создаётся при создании каждого объекта.
Когда объект больше не используется, то есть когда количество ссылок на него становится равным нулю, он подлежит удалению как мусор.
Однако удаление не происходит немедленно; интерпретатор выполняет его в подходящий момент.
Механизм сборки мусора предназначен не только для объектов со счетчиками ссылок равными нулю, но также и для обработки циклических ссылок.
Циклические ссылки возникают, когда два объекта взаимно указывают друг на друга, но ни один из них не имеет других ссылок на себя.
Для таких случаев использование только счетчиков ссылок недостаточно.В Python сборщик мусора представляет собой сочетание счетчика ссылок и механизма сборки мусора для циклических ссылок. Сборщик мусора также следит за общим объемом памяти, занимаемым объектами, которые не были удалены через счетчики ссылок. В этом случае интерпретатор временно прекращает выполнение программы, чтобы попытаться очистить все циклические ссылки, которые больше не используются.### Наследование классов
Одним из основных преимуществ программирования с использованием объектов является возможность повторного использования кода, что достигается, среди прочего, благодаря механизмам наследования.
Новый класс, созданный путём наследования, называется производным или потомком, а класс, от которого происходит наследование, — базовым, родительским или суперклассом.
#### Синтаксис наследования
```python
class ПроизводныйКлассНазвание(БазовыйКлассНазвание):
...
```В Python некоторые особенности наследования:
1. Если в производном классе требуется конструктор родительского класса, его следует явно вызвать или не переопределять конструктор родителя. Подробнее можно узнать здесь: описание наследования конструктора родительского класса в Python.
2. При вызове методов базового класса необходимо использовать префикс имени класса и передать параметр `self`.
3. Python всегда сначала ищет методы соответствующего типа в текущем классе; если он не может найти метод в производном классе, он начинает искать методы в каждом из базовых классов последовательно.
Если в списке наследования указано более одного базового класса, это называется "множественным наследием".
#### Синтаксис
Производный класс объявляется аналогично его родительским классам; список базовых классов следует за именем класса, как показано ниже:
```python
class SubClassName (ParentClass1[, ParentClass2, ...])
__private_attrs
: два нижних подчеркивания в начале указывают на то, что это приватный атрибут, который нельзя использовать или непосредственно обращаться к нему вне класса. Внутри методов класса используется как self.__private_attrs
.#### Методы класса
Внутри класса можно определить метод с помощью ключевого слова def
. Отличие от обычной функции заключается в том, что каждый метод класса должен содержать параметр self
, который является первым параметром.
__private_method
: два нижних подчеркивания в начале указывают на то, что этот метод является приватным и его нельзя вызвать вне класса. Внутри класса он вызывается через self.__private_methods
.
__foo__
: Определяют специальные методы, обычно это системные имена, такие как __init__()
.
_foo
: Одно нижнее подчеркивание в начале указывает на защищённый тип переменной, доступна только внутри класса и его потомков.
__foo
: Два нижних подчеркивания в начале указывают на приватный тип переменной, доступна только внутри самого класса.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )