предисловие
Я до сих пор помню, когда я изучал Python,Python все является объектомЭто очень сбивает с толку, потому что Python — это объектно-ориентированный динамический язык, и в применении функций и функций более высокого порядка, если у вас нет очень глубокого понимания всего, что является объектом, а основа не так прочна, затем для будущего развития Python.С точки зрения порядка, это немного тормоз.Поскольку друг связался со мной и сказал, что понимание всего, что является объектом, не слишком прочно, то этот блог Muzi обобщает эту точку знаний . Если что-то не так, пожалуйста, поправьте меня.
Кратко
Долгосрочное короткое изречение, эта статья в основном нацеленаPython все является объектомОбсуждать, в основном, со следующих двух аспектов:
Гражданин Python первого класса
Связь между типом, объектом и классом
Для распространенных встроенных типов Python в этой статье не будут подробно описаны
Встроенные типы: Нет (в глобальном масштабе только один) Числовые типы: int, float, complex (complex), bool Тип итерации Тип последовательности: список, байты, диапазон, кортеж, строка, массив тип карты: дикт Тип коллекции: набор, замороженный набор Тип управления контекстом: с
Гражданин Python первого класса
Что такое гражданин первого класса?
- присваивается переменной
- может быть добавлен в объект коллекции
- Может быть передан как параметр функции
- Может использоваться как возвращаемое значение функции
Для назначения переменным и объектам, добавленным в коллекцию, код для отображения:
def func(name='Python'):
print(f'the func is {name}')
class Test:
def __init__(self):
print(f'the class is {Test.__name__}')
obj_list = []
obj_list.append(func)
obj_list.append(Test)
for item in obj_list: # 添加至集合对象中
print(item())
Затем в приведенном выше примере результат выполнения кода выглядит следующим образом:
the func is Python # 函数func运行,打印结果
None # 函数func因没有return,返回None
the class is Test # 类Test运行,打印结果
<__main__.Test object at 0x0000024AB34526A0> # 类Test运行,因没有返回值,调用item(),返回类Test的对象
Затем для параметров, которые могут быть переданы в качестве параметров, показан следующий код:
def func(name='Python'):
print(f'the func is {name}')
def decorator_func():
print(f'the decorator_func is running')
return func # 返回函数func
my_test = decorator_func()
my_test('木子的三维世界') # 传递参数,调用func
Результат выполнения приведенного выше кода выглядит следующим образом:
the decorator_func is running
the func is 木子的三维世界
Связь между типом, объектом и классом
Приведенный выше код должен продемонстрировать, что является первоклассным гражданином Python, поэтому я думаю, что некоторые коллеги-даосы до сих пор не совсем понимают, почему все является объектом в Python, так что вот и настало время.После понимания типа, объекта и класса, Музи считает, что каждый должен полностью выдержать живое выступление. Для простоты понимания приведен код:
# 示例如下
a=2019
b="一切皆对象"
print(type(2019))
print(type(int))
print(type(b))
print(type(str))
class Student:
pass
stu = Student()
print(type(stu))
print(type(Student))
print(int.__bases__)
print(str.__bases__)
print(Student.__bases__)
print(type.__bases__)
print(object.__bases__)
print(type(object))
print(type(type))
Результат выполнения приведенного выше кода выглядит следующим образом:
<class 'int'> # 2019是由int这个类创建的实例
<class 'type'> # int这个类是由type这个类创建的实例
<class 'str'> # 同上
<class 'type'>
<class '__main__.Student'> # stu是类Student创建的实例
<class 'type'> # 类Student是由type这个类创建的实例
(<class 'object'>,) # 类int的基类是object这个类
(<class 'object'>,) # 同上
(<class 'object'>,) # 同上
(<class 'object'>,) # 重点:类type的基类也是object这个基类
() # 重点:类object没有基类
<class 'type'> # 难点:类object是由类type创建的实例
<class 'type'> # 难点:类type是由type类自身创建的实例
Для приведенного выше кода мы можем сделать следующие выводы:
- Тип класса создает экземпляр int, а класс int имеет экземпляр типа 2019.
- Объект класса является базовым классом верхнего уровня.
- тип также является классом, а также объектом
Должно быть, есть друзья-даосы, которые немного сбиты с толку, увидев приведенный выше код. Пожалуйста, посмотрите на изображение ниже:
для картинки вышеЧитать следующим образом:
- object — это все объекты: базовый класс list, str, dict, tuple и object — это экземпляр типа
- Тип класса является экземпляром самого себя, и тип также наследуется от класса объекта.
- Из вывода 1 и вывода 2 делается вывод, что все является объектом, и все наследуется от класса объекта
Суммировать
Python Все подчинено функциональному программированию, а также различным высокоуровневым применениям Python. Если вам не очень понятно, тосм. больше фотографий выше, если все в порядке, посмотри еще, если не плохо. . . Хорошо, больше разговоров
Так что вы, должно быть, видели это, и у вас уже есть четкое представление обо всем в Python.Muzi обновит статью в будущем.Блог о метаклассах Python, сегодня также предзнаменование.
Примечания: почему класс типов может быть собственным экземпляром, заинтересованные даосы могут понять концепцию указателей.
Поздно, ложитесь спать, чтобы спать, завтра работать в понедельник. . .