第 6 集 · B1 · 7 分钟

Python · 第6集 · SOLID 与面向对象

讲师 Тимофей Хирьянов 的 Python 实践、算法和面向对象课,边看代码边听俄语。 开头:二年级学生

Python · 第6集 · SOLID 与面向对象

中俄字幕

  1. студентов второго курса

    二年级学生

  2. ЛФИ. Это физтех- школа в рамках Московского физико- технического института, это

    LFIS(物理技术学院下属的物理技术学校)

  3. бывшие факультет общей прикладной физики

    原为普通应用物理系

  4. ФОПФ и ФПФФ. Курс рассчитан на небольшую группу студентов, то есть их всего там 20

    即FOFP和FPPF系。本课程面向小班教学,学生共约20人

  5. человек, чуть больше, чуть меньше условно сейчас, потому что у нас две подгруппы,

    实际人数略多或略少,目前暂定为20人,因为我们分为两个小组

  6. одну веду я, вторую ведет Светлана Медведева, моя коллега.

    我负责其中一组,另一组由我的同事斯韦特兰娜·梅德韦杰娃负责

  7. Я сразу вынужден признаться в своей недостаточной компетентности, чтобы читать этот

    我必须坦诚,自己并不完全具备讲授本课程的专业能力

  8. курс. Я не являюсь data scientist'ом.

    我本人并非数据科学家

  9. Тем не менее мне придется читать этот курс, потому что я считаю, что он должен быть

    尽管如此,我仍需承担本课程的教学任务,因为我认为这门课必须开设,而目前无人可教

  10. прочитан, а читать больше некому.

    因此只能由我来承担

  11. Ну, собственно, не совсем так.

    嗯,其实并不完全是这样。

  12. Светлана Медведева есть, вот, она будет вести в своей подгруппе, я буду вести в

    斯韦特兰娜·梅德韦杰娃会负责她所在小组的教学,我则负责我所在小组的教学,

  13. своей подгруппе, мы будем вести курса на пару.

    我们将共同承担这门课程的教学工作。

  14. Спасибо ей за помощь в разработке учебной программы, скажем честнее.

    更坦诚地说,感谢她在教学大纲制定过程中提供的帮助。

  15. Я ей дал наброски, она ее довела до хорошего состояния, вот, а также за подготовку

    我给了她一些初步构想,她将其完善到了良好水平,此外,

  16. методических материалов.

    感谢她准备教学资料。

  17. Мы будем записывать, я буду записывать лекционную часть занятия, ну естественно

    我们会进行录制,我将录制授课部分,当然,

  18. будут какие- то мои мастер- классы по анализу данных на практике, но безусловно

    其中也会包含我讲授的一些数据分析实践方面的专题课,但毫无疑问,

  19. семинарская часть тоже, она может быть записана с согласия студентов, где мы там

    研讨课部分也可能在征得学生同意后进行录制,在此过程中,

  20. совместно с ними что- то раздолбываем какую- нибудь задачку.

    我们会与学生一起合作解决某个实际问题。

  21. Но лабораторная работа, где работаю персонально где- то со студентами, она не может

    但是,我亲自带学生做的实验课,是无法

  22. быть записана, я считаю, что это неэтично и неправильно ковыряться уже в деталях.

    被录下来;我认为,深入细节地窥探这种做法既不道德也不恰当。

  23. И вообще для вольнослушателей курс обеспечить в какой- то форме лабораторной работы,

    此外,为旁听生提供某种形式的实验课,

  24. в смысле их контроль выполнения помощи мы не можем, это подразумевает какое- то вот

    即我们无法监控其完成情况或提供帮助,

  25. такое непосредственно менторство, да, вот.

    这实际上意味着需要某种直接的导师指导,是的。

  26. И ну тут никак никуда не деться, вот.

    所以,这一点确实无可避免。

  27. Так что я рад, если вы будете слушать этот курс, если он вам чем- то поможет, вот.

    因此,如果你们收听这门课程,并从中有所收获,我将非常高兴。

  28. Но тем не менее, еще раз говорю, есть на самом деле по анализу данных есть много

    但我要再次强调,事实上,数据分析领域已有大量

  29. учебных курсов.

    教学课程。

  30. И как всегда, еще одна.

    而且,一如既往,这里再推荐一门。

  31. поправка. У данного курса есть конкретная целевая аудитория.

    更正:本课程有明确的目标受众。

  32. Это конкретные вот эти 20 человек на втором курсе, которые являются физиками,

    具体来说,就是二年级的这20名物理专业学生,

  33. будущими учеными, я буду целиться на них.

    未来的科学家,我将专门针对他们授课。

  34. Все остальные, ну вы получаете видеозапись, да, но

    其余所有人,嗯,你们可以观看录播视频,是的,但

  35. сразу простите, я ориентируюсь не на вас, не на айтишников, да.

    请直接见谅,我的授课重点并非面向你们,也不是面向IT从业者,是的。

  36. У этих ребят конкретный возраст, конкретный уровень знаний, я знаю их уровень

    这些学生的年龄和知识水平都很明确,我了解他们的知识水平,

  37. знаний, я понимаю, о чем речь.

    我清楚他们在学什么。

  38. Значит, теперь кратенько про курс.

    接下来,简要介绍一下本课程。

  39. Курс состоит из 15 недель, в эти 15 недель 15 занятий, соответственно.

    课程共15周,对应15节课。

  40. И собственно пять занятий будет посвящено ревизии языка Python на новом уровне.

    其中,前五节课将专注于在更高层次上复习Python语言。

  41. Для ребят это будет новый уровень, вот это будет ООП, функциональщина и все прочее.

    对同学们来说,这将是一个新层次,即面向对象编程、函数式编程等。

  42. Давайте я сейчас не буду подробно останавливаться на программе учебного курса,

    接下来,我暂不详细讲解课程大纲,

  43. скорее всего я ее там ниже выложу ссылкой, а сейчас давайте с вами начнем,

    大纲很可能会在下方以链接形式提供,现在我们先开始吧,

  44. собственно. лексионную часть.

    正式进入词汇部分。

  45. Сегодняшнее занятие посвящено объектно- ориентированному программированию на Python.

    今天的课程主题是Python中的面向对象编程。

  46. Значит, мы вот эти темы сегодня поднимем.

    今天我们将会探讨以下这些主题。

  47. Что такое объект, класс вспомним, SOLID принципы, магические методы и так далее.

    什么是对象、类,回顾SOLID原则、魔法方法等。

  48. Давайте к делу.

    言归正传。

  49. парадигма объектно- ориентированного программирования

    面向对象编程范式

  50. в ОП данные структурируются в виде объектов каждый из них имеет определенный тип.

    在OOP中,数据以对象的形式组织,每个对象都有特定的类型。

  51. то есть принадлежит какому- то классу.

    即属于某个类。

  52. Собственно, классы— это и есть типы объектов.

    实际上,类就是对象的类型。

  53. Классы. это результат формализации решаемой задачи выделение ее главных аспектов.

    类是对所解决问题进行形式化后提取其主要方面的结果。

  54. Класс, ну есть такое отдельное понятие абстрактный класс, но дело в том, что любой

    类——嗯,有一个单独的概念叫抽象类,但事实上,任何

  55. класс является уже сам по себе некоторой абстракцией над объектами.

    类本身就已经是对对象的一种抽象。

  56. Объекты— это его конкретные представители, экземпляры.

    对象是类的具体实例。

  57. соответственно внутри объекта говорят такое слово инкапсулируются то есть как бы вот

    因此,在对象内部会提到‘封装’这个词,即把……

  58. в капсулу заключается в такое вот это

    像装进胶囊一样,被封闭起来。

  59. пространство, да?

    这样一个空间,对吧?

  60. Вот он в других языках, в Python это защита маленькая, в других языках инкапсуляция

    在其他语言中,比如Python,这种保护机制较弱;而在其他语言中,封装机制……

  61. подразумевает как бы некую стену защиты от внешних воздействий.

    意味着某种抵御外部影响的防护墙。

  62. В Python'е она есть, но ее не очень много.

    Python 中有封装,但并不丰富。

  63. Вот, но тем не менее слово инкапсуляция, оно подразумевает, что туда заложена, да, и

    是的,但尽管如此,‘封装’这个词意味着其中已内置了这种机制,没错。

  64. она вот имеет некую логическую границу, да.

    它具有某种逻辑边界,是的。

  65. Инкапсулируется логика работы с относящейся к нему информацией.

    与对象相关的信息处理逻辑被封装起来。

  66. Объекты в программе взаимодействуют друг с другом, обмениваются запросами и

    程序中的对象相互交互,交换请求和响应。

  67. ответами. Как именно организованы эти запросы, ответы— это уже дело отдельное.

    这些请求和响应的具体组织方式,则是另一回事。

  68. Способов организации вот этого вот

    组织这种请求-响应的方式,

  69. response request на самом деле очень много,

    实际上非常多,

  70. очень много. Совершенно необязательно это вызов метода, ну, чаще всего это вызов

    非常多。这完全不一定是方法调用——虽然通常确实是方法调用。

  71. метода объекта, но на самом деле возможны и другие способы, которые как- то так вот

    对象的方法,但实际上还可能存在其他方式,大致如此

  72. подразумеваются.

    是隐含的。

  73. при этом объекты одного типа сходным образом отвечают на одни и те же запросы

    同一类型的对象会对相同的请求做出相似的响应。

  74. понятно ну потому они как бы типизированы объединены в классы объекты могут

    明白了吧?正因如此,它们才被类型化、归入类中。

  75. организовываться в более сложные структуры

    对象可以组织成更复杂的结构。

  76. с легкостью они могут включать другие объекты или наследовать от одного или

    它们能轻松地包含其他对象,或从一个或多个对象继承。

  77. нескольких объектов.

    多个对象。

  78. Наследование на самом деле подразумевает,

    继承实际上意味着:

  79. что объект является как бы неким частным случаем другого объекта, но мы сейчас это

    某个对象本质上是另一对象的一个特例,但这一点我们稍后会详细讲解。

  80. будем детально разбирать.

    我们将详细讲解。

  81. А вот поглощение, оно стоит отдельного разговора.

    而吸收则需要单独讨论。

  82. Дело в том, что в биологии, а начинал я преподавать Python именно биологам на ФБМФ,

    这是因为,在生物学中——我最初是在生物医学系(FBMF)为生物专业学生讲授Python的——

  83. биомед факультете.

    即生物医学系。

  84. вот и там я объяснял им так что такое объект но объект это как клетка вот она

    我在那里向他们解释:对象就像细胞,它

  85. инкапсулировалась у нее есть мембрана да ее внутренние там органеллы они закрыты

    是被封装的,它有细胞膜,内部的细胞器被封闭在其中,

  86. внутри инкапсулированы а взаимодействие происходит через какие то методы да то есть

    即被封装在内部,而交互则通过某些方法进行,

  87. есть некие интерфейсы через которые мы можем вызвать

    也就是说,存在一些接口,我们可以通过它们来调用功能。

  88. соответственно что то ну или бывает ситуация когда у нас сама как называется живая

    相应地,有时会出现一种情况:我们自身——该怎么称呼呢?——活细胞

  89. клетка что то впрыскивает внешнюю среду да

    会向外部环境注入某些物质。

  90. вот ну я так примитивно объясняю тем не менее у наших клеток у наших я имею в виду у

    是的,我这样解释虽很粗浅,但我们的细胞——我指的是我们人类的细胞——

  91. животных есть внутри клетка с собственной ДНК

    动物细胞内含有具有自身DNA的细胞器。

  92. внутри клетки есть митохондрия, и у митохондрий есть собственная митохондриальная

    细胞内有线粒体,而线粒体拥有自身的线粒体DNA。

  93. ДНК, которая наследуется только по материнской линии.

    这种DNA仅通过母系遗传。

  94. И вот эти самые митохондрии, являясь одновременно органеллами, они одновременно

    这些线粒体既是细胞器,同时又

  95. являются такими как бы почти клетками.

    近乎独立的细胞。

  96. Это очень интересная ситуация, на которой можно проиллюстрировать как раз вот эту

    这是一种非常有趣的情形,恰好可以用来说明刚才提到的这一逻辑:

  97. логику, что да, внутри объекта не обязательно примитивные элементы.

    是的,物体内部的组成部分未必是简单的元素。

  98. Потому что существуют.

    因为它们确实存在。

来源:Тимофей Хирьянов · CC BY 3.0

同系列