Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Привет всем, яодна чаша в неделю, передняя часть, которая не хочет быть пьяной (завернутой). Если написанной статье посчастливилось получить вашу благосклонность, мне очень повезло~
Основные понятия объектно-ориентированного подхода
все является объектом
Все типы данных в языке Python — это объекты, функции — это объекты, а модули — это объекты.
Все классы в Python наследуются от самого базового объекта класса.
Операционные функции типов данных в языке Python — это все проявления методов класса.
Объектно-ориентированное программирование
объектно-ориентированное программированиеООП (объектно-ориентированное программирование)
- ООП: объектно-ориентированное программирование, идея программирования, которая фокусируется на высоко абстрактном повторно используемом коде.
- ООП рассматривает объект как базовую единицу программы, объект содержит данные и функции для управления данными.
- Суть ООП заключается в том, чтобы абстрагировать решение проблем в объектно-ориентированные компьютерные программы.
- ООП очень полезен в крупномасштабных или сложных проектах, ООП можетУвеличьте совместный доход
- OOPсамая важная ценностьлежит вповторное использование кода
- ООП — это просто стиль программирования, а не продвинутый способ решения проблем.
Разница между процессно-ориентированным и объектно-ориентированным
ориентированный на процессЭтапы процесса решения проблемыСпособ написания программ для ядра, объектно-ориентированный наПостроение и применение проблемного объектаСпособ написания программ для ядра, все проблемы, которые можно решить с помощью ООП, могут быть решены процессно-ориентированным.
Объектно-ориентированные функции
-
упаковка (Encapsulation): Абстракция свойств и методов с использованием данных и методов манипулирования данными для формирования объектной логики.
-
Абстракция методов: определение, изоляция и защита атрибутов класса (переменных)
- Абстракция объекта: определение, изоляция и защита методов (функций) класса
- Цель состоит в том, чтобы сформировать интерфейс для внешних управляемых свойств и методов класса.
-
-
наследовать: высокоуровневая абстракция для повторного использования кода, использующая отношения наследования между объектами для формирования повторного использования кода.
-
Наследование — одна из квинтэссенций объектно-ориентированного программирования.
- Реализует повторное использование кода на высоком уровне абстракции в единицах классов.
- Наследование — это процесс, посредством которого вновь определенный класс может почти полностью использовать свойства и методы исходного класса.
-
-
полиморфизм: абстракция гибкости метода, делающая работу с объектами более гибкой, а код более пригодным для повторного использования.
-
Полиморфизм типов параметров: способность метода обрабатывать несколько типов.
- Параметрический полиморфизм: способность метода принимать несколько параметров.
- Полиморфизм — это традиционная концепция ООП, Python естественным образом поддерживает полиморфизм и не требует специального синтаксиса.
-
Объектно-ориентированная терминология Python
своего рода(Class) и объект (Object)
-
Классы: логические абстракции и шаблоны, которые создают объекты, набор переменных и определенное расположение функций.
-
Объект: объект, который конкретно выражает данные и операции, эквивалентный «переменной» в программе. В том числе: объект класса, объект экземпляра
После завершения определения класса по умолчанию генерируется объект класса, и каждому классу однозначно соответствует объект класса, который используется для хранения основной информации об этом накоплении.Объект класса является экземпляром типа, который выражается как тип типа;
- экземпляр объекта(Instance Object): объект, сгенерированный после экземпляра класса Python, называемый: объект
- Глобально существует только один объект класса, и может быть сгенерировано несколько объектов-экземпляров.
-
Атрибут: «переменная», в которой хранятся данные (то есть переменная, определенная в классе), используемая для описания некоторых характерных параметров класса. В том числе: атрибуты класса, атрибуты экземпляра
-
атрибут класса(Class Attribute): свойства объектов класса, общие для всех объектов экземпляра; определенные внутри класса, в
__init__
вне функции. Как правило, атрибуты, общие для классов, определяются как атрибуты класса. - свойства экземпляра(Instance Attribute): Атрибуты объектов экземпляра, обычно определяемые в функциях в классах, и атрибуты экземпляра могут быть уникальными для экземпляра.
-
атрибут класса(Class Attribute): свойства объектов класса, общие для всех объектов экземпляра; определенные внутри класса, в
-
Метод: «метод» (то есть переменная, определенная в классе), который работает с данными, используется для задания операционной функции класса. В том числе: методы класса, методы экземпляра, бесплатные методы, статические методы, зарезервированные методы.
- метод класса(Class Method): методы объектов класса, общие для всех объектов экземпляра
- метод экземпляра(Instance Method): метод объекта-экземпляра, используемый исключительно каждым объектом-экземпляром, наиболее часто используемая форма,
- бесплатный метод(Namespace Method): обычная функция в классе, управляемая пространством имен, в котором находится класс, и исключительно для объектов класса
- статический метод(Static Method): обычная функция в классе, совместно используемая объектами и объектами-экземплярами
- зарезервированный метод(Reserved Method): Метод с двойным подчеркиванием Kash и end зарезервирован для использования.
-
Создание экземпляра: процесс перехода от класса к объекту, все «объекты» являются производными от «класса».
Построение класса Python
Базовая конструкция классов
В Python используйтеclass
Ключевое слово плюс имя класса для определения класса, с помощью отступа мы можем идентифицировать блок кода класса, точно так же, как определение функции. Грамматические структуры
class <类名>:
[类描述“documentation string”]
<语句块>
Поскольку Python является языком сценариев, класс определения не ограничивает местоположение и может быть включен в ветви или другие подчиненные блоки операторов, а выполнение необходимо только.
- Имя класса: может быть любым допустимым идентификатором, обычно первая буква заглавная.
- Описание класса: В первой строке после определения класса он определен в виде независимой строки, пройти после определения
<类名>.__doc__
посещать
образец кода
class TestClass:
"""这是一个测试的类"""
print("Hello Class Object")
print(TestClass.__doc__)
print(type(TestClass))
'''
----输出结果----
Hello Class Object
这是一个测试的类
<class 'type'>
'''
Операторы, непосредственно содержащиеся в объекте класса, будут выполняться, все определяют класс, насколько это возможно, чтобы не содержать оператор непосредственно в классе.
экземпляр объекта: Объекты-экземпляры — наиболее распространенный способ использования классов Python.
Создать синтаксическую структуру объекта экземпляра
<对象名> = <类名>([参数])
пример кода
class TestClass:
print("一碗周")
tt = TestClass()
print(type(tt))
'''
----输出结果----
一碗周
<class '__main__.TestClass'>
'''
конструктор класса
концепция
- Конструктор класса используется дляСоздать экземпляр объекта из классапроцесс
- Конструктор класса предоставляет метод ввода параметров для создания экземпляра объекта.
- Конструктор классасвойства экземпляраОпределение и назначение
Python использует предопределенные__init__()
как конструктор
Грамматические структуры
class ClassName:
def __init__(self,[参数1], [参数2], ...[参数n]):
<语句块>
...
пример кода
class TestClass:
def __init__(self, name):
print(name)
text1 = TestClass("张三") # 张三
text2 = TestClass("李四") # 李四
через конструктор
__init__
Аргументы могут быть предоставлены Python
**__init__()
**Инструкции по применению
Параметры: первым соглашением о параметрах является self, который представляет сам экземпляр класса, а остальные параметры являются параметрами экземпляра (self
Он используется внутренне, зарезервирован по умолчанию, а параметры, введенные другими пользователями, помещаются вself
позже)
Имя функции: определяется внутри интерпретатора Python и представляется двойным подчеркиванием (__
) начало и конец
Возвращаемое значение: конструктор не имеет возвращаемого значения или возвращает None, в противном случае генерируется исключение TypeError.
**self
**Представляет экземпляр класса внутри определения класса
-
slef
является параметром класса объектно-ориентированного соглашения Python. -
self
Представляет экземпляр класса внутри класса,self
Используется для объединения доступа к свойствам и методам, связанным с экземпляром. - Напротив, имя класса представляет сам объект класса.
свойства класса
Атрибуты — это переменные, определенные внутри класса, структура синтаксиса↓
class ClassName:
<类属性名> = <类属性初值>
def __init__(self,[参数1], [参数2], ...[参数n]):
self.<实例属性名> = <实例属性初值>
...
- Доступ к свойствам класса:
<类名>.<类属性>
или<对象名>.<类属性>
- Доступ к свойствам экземпляра:
<对象名>.<实例属性>
пример кода
class TestClass:
count = 0 # 类属性
def __init__(self, name, age):
self.name = name # 实例属性
self.age = name
TestClass.count += 1 # 实例化一次 count+1
students1 = TestClass("张三", "18")
students2 = TestClass("李四", "19")
print("总数:", TestClass.count) # 总数: 2
print(students1.name, students2.name) # 张三 李四
метод класса
-
Метод экземпляра: метод экземпляра — это функция, определенная внутри класса, независимая от объекта экземпляра, структуры синтаксиса
class ClassName: def <方法名>(self, <参数列表>): ...
<方法名>(<参数列表>)
Способ определения первого параметра с использованием метода экземпляра:self
пример кода
class TestClass: def __init__(self, number): self.number = number def sum_number(self): # 实例方法 sum_num = 0 for i in range(self.number + 1): # 因为循环不会到最后一个数字 sum_num += i return sum_num number1 = TestClass(100) number2 = TestClass(10) print(number1.sum_number()) # 5050 print(number2.sum_number()) # 55
-
Метод класса: метод класса — это функция, связанная с объектом класса, общая для всех объектов экземпляра, синтаксическая структура↓
class ClassName: @classmethod def <方法名>(cls, <参数列表>): ...
<方法名>(<参数列表>)
или<类名>.<方法名>(<参数列表>)
метод, метод класса содержит хотя бы один параметр, представляющий объект класса, рекомендуется использовать@classmethod
это декоратор, необходимый для определения методов классаметод классаМожно управлять только свойствами классаидругие методы класса, не может управлять свойствами и методами экземпляра.
пример кода
class TestClass: sum_num = 0 def __init__(self, number): self.number = number def sum_number(self): for i in range(self.number + 1): # 因为循环不会到最后一个数字 TestClass.sum_num += i return TestClass.sum_num @classmethod def test(cls): # 类方法 test_value = TestClass.sum_num * 2 return test_value value1 = TestClass(100) print(value1.sum_number()) # 5050 print(value1.test()) # 10100
-
Собственный метод: Собственный метод — это обычная функция, определенная в пространстве имен класса, синтаксис следующий:
class ClassName: def <方法名>(<参数列表>): ...
.<方法名>(<参数列表>)
способ использования,<类名>
Представляет пространство имен. собственный метод не требуетself
илиcls
Такие параметры не могут иметь параметров. Собственные методы могут работать только с атрибутами и методами класса, но не могут работать с атрибутами и методами экземпляра. Использовать бесплатные методы можно только<类名>
Строго говоря, свободный метод — это не метод, а функция, определенная в классе
пример кода
class TestClass: sum_num = 0 def __init__(self, number): self.number = number def sum_number(self): for i in range(self.number + 1): # 因为循环不会到最后一个数字 TestClass.sum_num += i return TestClass.sum_num def test(): # 自由方法 test_value = TestClass.sum_num * 2 return test_value def test_out(): # 等于上面的那个自由方法 test_out_value = TestClass.sum_num * 2 return test_out_value value = TestClass(100) print(value.sum_number()) # 5050 print(TestClass.test()) # 10100 print(test_out()) # 10100
Свободные методы, определенные в классе, также могут быть определены вне его.
-
Статический метод: обычная функция, определенная в классе, которая может использоваться всеми объектами экземпляра.
class ClassName: @staticmethod def <方法名>(<参数列表>): ...
.<方法名>(<参数列表>)
или<类名>.<方法名>(<参数列表>)
Способ использования статических методов также может не иметь параметров, под которыми можно понимать собственные методы, которые можно вызывать по имени объекта.@staticmethod
Это декоратор и требуется для определения статических методов.Как и свободные методы, статические методы могут работать только с атрибутами класса и методами класса, но не могут работать с атрибутами экземпляра и методами экземпляра.<类名>
или<对象名>
.образец кода
class TestClass: sum_num = 0 def __init__(self, number): self.number = number def sum_number(self): for i in range(self.number + 1): # 因为循环不会到最后一个数字 TestClass.sum_num += i return TestClass.sum_num @staticmethod # 静态方法装饰器 def test(): test_value = TestClass.sum_num * 2 return test_value value = TestClass(100) print(value.sum_number()) # 5050 print(TestClass.test()) # 10100 print(value.test()) # 10100
-
Зарезервированный метод: методы с двойным подчеркиванием Kash и end зарезервированы для использования. Грамматическая структура↓
class ClassName: def <保留方法名>(<参数列表>): ...
Зарезервированный метод обычно соответствует определенной операции класса, при использовании оператора вызов является зарезервированным методом в интерпретаторе Python.