Введение
В продолжение предыдущего поста о python я расскажу о более продвинутом материале. Речь пойдет о классах, наследовании классов и модулях python.
Классы
Что такое класс?
Классы — это как основа для создания персонализированного объекта, или, по выражению w3school, «как конструктор объектов, или «чертеж» для создания объектов». Классы, по сути, представляют собой объект, содержащий ряд свойств и методов (функций).
Создание класса довольно просто для python, поскольку класс объявляется ключевым словом ‘class’, за которым следует имя класса и любые свойства или методы, которые желательны или необходимы.
#Creating a class
class Example:
x = 1 #any variable declared in the class serves as a property
y = "example text"
z = True
Свойства
Как показано в примере выше, свойства — это переменные, объявленные и хранящиеся в объекте. Свойства могут быть любыми типами данных, используемыми в python, и доступ к ним можно получить следующим образом:
#Accessing properties from outside the class
print(Example.x) #prints 1 to console
Манипулирование свойствами
Хотя свойства класса часто объявляются и управляются внутри определения класса, можно добавлять, удалять или изменять свойства класса вне определения. Однако следует отметить, что эти манипуляции могут привести к изменению определения или конкретного экземпляра класса, в зависимости от того, как они выполняются.
#Manipulating Properties of a Class Definition
class Example:
x = 1
Example.y = 2 #adds new y property to Example
del Example.y #removes y property from Example
Example.x = 3 #modifies existing x property of Example
#Manipulating Properties of a Class Instance
ex1 = Example() #create an instance of the Example class
ex1.y = 2 #adds new y property to ex1 (this particular instance of Example)
print(Example.y) #will cause an error due to y property not existing for Example)
ex1.x = 1 #will modify value of x property for ex1 (this instance)
print(Example.x) #will print 3
print(ex1.x) #will print 1
del ex1.y #delete y property of ex1
del ex1 #delete entire object
Методы
Методы — это функции, содержащиеся внутри класса, которые могут делать все, что делает обычная функция.
#Creating and using a method
class Example:
def func():
print('Hello')
Example.func() #prints 'Hello'
ex1 = Example()
ex.func() #prints 'Hello'
Метод init
В некоторых случаях может потребоваться, чтобы класс принимал значение или выполнял действие при создании экземпляра класса. Для этого все классы python имеют метод init, который будет выполняться каждый раз, когда создается экземпляр класса.
#Using the __init__ method
class Example:
def __init__(self, x, y): #The self parameter is used to refer to the properties of class inside the class definition
self.x = x
self.y = y
print('new instance of Example made')
def add(self): #whenever a method wants to use properties in the class definition, self must be the first parameter
print(self.x + self.y)
ex1 = Example(1, 2) #will print 'new instance of Example made' due to init
ex1.add() #will print 3 to console
Pass
Относительно небольшим включением класса является pass. Pass — это утверждение, используемое, если определение класса пусто. Обычно определение класса требует наличия хотя бы одной строки кода внутри, чтобы не привести к ошибке, но pass фактически позволяет использовать пустое определение.
#Pass example
class Example:
pass #this results in a no content class, for whatever reason one would be wanted
Наследование классов
Бывают случаи, когда кодер может иметь кучу классов, которые имеют ряд общих черт, но также имеют ряд черт, которые не являются общими. Чтобы помочь в таких ситуациях, можно создать класс, обладающий всеми схожими свойствами, которые затем могут быть использованы всеми остальными объектами. Такая функциональность называется наследованием классов. Наследование классов работает путем создания «родительской функции», которая содержит все свойства и методы, общие для ряда объектов, и дочерних классов, которые наследуют от родительского класса все эти общие элементы, имея при этом свои собственные свойства и методы, которые есть только у дочернего класса.
#Parent Class
class Parent:
def __init__(pers, x, y):
pers.x = x
pers.y = y
#parent method
def meth():
print('parent method')
#parent classes are just like a normal class
Дочерние классы
#Inheritance demonstration
class Child(Parent):
pass
ex1 = Child(1, 2)
ex1.meth() #print 'parent method'
#as Child is now it has only the inherited properties and methods from Parent
class Child2(Parent):
def __init__(self, x, y):
#the init of Child2 will overwrite the init for Parent. to include the init of Parent this must be used:
Parent.__init__(self, x, y)
#anything added from this point on in the init will only apply to the init of Child2
def meth():
#another way to have an overwritten method/property inherited is with the super keyword
super().meth() #meth method takes in from meth function in Parent
ex2 = Child2(2, 4)
ex2.meth() #prints 'parent method'
Модули
Что такое модуль?
Модули — это эквивалент библиотеки в Python, содержащий функции и переменные, которые могут быть использованы в файлах кодера. В Python есть множество встроенных модулей, доступных для всех желающих, однако люди могут создавать свои собственные модули для личного использования.
Использование модуля (импортирование)
Использовать модуль довольно просто. Скажем, программист хочет получить доступ к математическому модулю python, чтобы использовать один из его дополнительных методов, скажем, метод квадратного корня. Для этого нужно сделать следующее:
#importing a module
import math
Та-да, все очень просто. Просто используйте import и имя модуля, и теперь файл может использовать любую функцию из математического модуля. Теперь, чтобы использовать метод квадратного корня в математике, нужно сделать следующее:
a = math.sqrt(4) #use the module name followed by the function name to access the function
print(a) #prints 2
Использование модулей: Дополнительная информация
Некоторые незначительные, но полезные моменты при использовании модулей — это псевдонимы, списки функций и импорт частей модуля.
Псевдонимы
Псевдонимы — это способ ссылаться на модуль под другим именем. Допустим, имя модуля трудно написать правильно или кодеру просто нужно простое сокращение для модуля. Использовать псевдоним довольно просто, используя ключевое слово as.
#Using aliases
import modulename as mn #a module alias can be anything
mn.func() #using an alias to call a function from the module
Список функций
Иногда программист может импортировать модуль с большим количеством функций или переменных, не зная их имен. Чтобы узнать все, что содержит модуль, в python, к счастью, есть функция dir. Dir предоставляет список всех имен переменных и функций в данном модуле.
#Using dir
import math
funcList = dir(math)
print(funcList) #prints a list of all function/variable names in the math module
Импортирование частей модуля
Иногда программист может захотеть получить доступ к определенной функции или переменной из модуля и поэтому не хочет или не нуждается во всем модуле для файла. Python предоставляет простой способ импортировать часть модуля, а не весь модуль целиком.
#importing part of a module
from math import sqrt
print(sqrt(4)) #prints 2
#when using a function or variable imported this way, the module name is not used to invoke the imported value
Создание модуля
Создать модуль довольно просто. Для этого программист создает файл python с переменными или функциями, созданными обычным образом, затем называет файл как угодно и заканчивает имя .py
. После этого все, что нужно сделать кодеру, это в другом файле использовать import modulename
без .py
и готово! Модуль создан и импортирован.
Встроенные модули
В Python есть множество модулей, но некоторые из них могут быть полезны для общих целей:
- math : ряд полезных математических функций
- datetime : добавляет объект даты для использования и управления датами
- json : использование форматирования json в python.
Закрытие
Полезные источники:
w3schools
модули python