前言
利用Pytorch构建神经网络对我来说尚有难度,需学习面向对象的知识。我依据书籍《Python 3 面向对象编程(第2版)》,记录学习内容与个人问题。
学习内容提供给大家作为参考。
一、对象是什么?
对象是数据和相关行为的集合。
二、第一章笔记
1.对象与类的关系
代码如下:
class MyFirseClass:
print("这是我的第一个类。")
aa = MyFirstClass
print('---')
bb = MyFirstClass
'''
输出:
这是我的第一个类。
---
这是我的第一个类。
'''
示例代码的重点有三个:
- 使用
class
定义类,并且类具有行为,例如:输出语句。 - 类和对象存在必然的先后顺序。特定的类编写完成后,即已确定了类的输入输出
数据
以及行为方法
,才能够定义一个对象。 - 根据一个类
MyFirstClass
,可以定义多个对象aa
和bb
。理解为,类是对象的模板。
2.封装与抽象
代码如下(示例):
class Person:
def __init__(self,matter=None,move='False'):
self.matter = matter
self.move = move
def DrinkWater(self):
if self.matter == 'cup' and self.move == 'True':
print("吨吨吨~")
if self.matter != 'cup':
print("缺少一个水杯。")
if self.move != 'True':
print("没有行动的欲望。")
kk_1 = Person()
kk_1.DrinkWater()
print('---')
kk_2 = Person('cup','True')
kk_2.DrinkWater()
'''
输出:
缺少一个水杯。
缺乏行动的欲望
---
吨吨吨~
'''
首先需要明确我的理解,封装
和抽象
并不是aa=15
这样的一行代码能够完成的操作,它们混合着python编程的概念,最终由多行代码实现。
示例代码的重点有三个:
- 我封装了一个类
Person
以及一个方法DrinkWater
。经过封装。他们分别有与外界的接口,即接受外界的信息;另外,他们有相对独立的内部实现,而内部实现对于外界是透明的,是外界没有必要关注的部分。 - 我在设计方法
DrinkWater
时,抽象出该方法的两个特点,需要cup
作为这种行为的承受者和True
确定有没有行动的欲望。 - 抽象和封装的关系,在我看来,完成时间没有先后,同时完成。而在封装开始前,可以写一些说明来检查设计的合理性。通过联系加强封装和抽象的技术。
以下是书中的摘抄
1.抽象是通过公共或者私有结构进行封装的过程,只处理与给定任务相关的最必要的一层细节。
2.尽可能不要让对象获取你的数据,除非你觉得这样做对你最有利。
3.不要给对象强制执行特定任务的接口。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了面向对象的概念和使用方法,面向对象的知识是我们快速便捷地使用pytorch的基础。