IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python 面向对象编程菜鸟实现版 -> 正文阅读

[Python知识库]Python 面向对象编程菜鸟实现版

原文链接

《微信背后的产品观》里,微信之父张小龙说:

对于非开发的同事,不妨也去学习一下怎么写程序。不是说真的要去做写程序的工作,而是希望可以了解一下面向对象的思路。......是否抽象到“足够抽象”的状态,如果没有抽象到这种状态,就会把事情做得很复杂,甚至会失控。

所以,除了新生代农民工里的搬砖崽,了解一下面向对象这个概念是百利无一害的。

什么是面向对象编程?

程序设计思想有面向对象(Object Oriented)和面向过程(Procedure Oriented)两大类。

面向过程是一次性的事,面向对象是关于某个主体有一堆过程的实现。比如,对于历史的描述,面向过程更像是编年体、发生一次动作就重新叙述一遍,而面向对象就像是纪传体,围绕人来展开历史故事的叙述。

那么,Python 这门编程语言又是怎么体现面向对象的呢?

Python 面向对象包括封装、继承多态这三个特性。

封装是把每个对象有关的行为封装在一个模块中;

继承是说对象2在对象1的特点基础上有延续和扩展;

多态是指,对象1和对象3在同一个动作命令下有不同的实现和处理方式。

Python可以很好的支持面向对象编程。也就是说,你可以把某个对象的一些操作封装在一个类里。通过对类的调用、继承和改写,来实现程序的复用。

下面我们来看一个非常简单的例子,有一家公司叫 “小匚科技”,员工只有三个人:甲、乙、丙。

然后我希望这个公司的每个人都有两个基础属性,一个是工号,一个是姓名,于是可以这样定义:

??????

接着来调用,需要传入参数,姓名和工号。???????

stuff1 = CodeStuff("甲","238493")stuff2 = CodeStuff("乙","173646")stuff3 = CodeStuff("丙","783901")
 

然后我们就可以对 stuff1、2、3后面加“.属性名”,来查询初始化属性。

图片

在定义类的属性时,属性前面加两个下划线,表示私有属性,只能通过类里面的方法来返回,如:

图片

图片

公司员工刚入职,可能只有姓名和工号的属性,但是一定还有其他动作。

定义一下,公司所有人都是正常放双休的。不同的员工,在周末做的事情不一样。可以在类的基础上,继续扩展。

此时,父类,也就是最前面定义这个?CodeStuff类,新增了?workday_act,?weekend_act?两个动作。

图片

大家平时好好上班,周末好好休息。

接着,我们定义 小匚科技 不同职责的员工的动作:

# 产品,平时的工作和周末的动作:class ProductStuff(CodeStuff):    # 在括号里加上前面定义过的类,表示一种继承,具备父类里的内容,比如init不用再写一遍    # 重写父类方法    def workday_act(self):        print(self.name + "平时玩手机,发现新需求、做竞品调研、写文档、画图")
    def weekend_act(self):        print(self.name + "周末白天出去玩、晚上视频号直播倾听用户反馈")??????
# 开发人员的动作:class DevelopmentStuff(CodeStuff):    # 接着重写   假设这个开发比较上进
    def weekend_act(self):        print(self.name + "周末学极客时间,刷 LeetCode,做肩颈运动,保护颈椎")

定义好后,调用一下看看:

图片

和没有具体身份的员工来做一个对比:

图片

开发人员没有定义工作日的动作,只定义了周末的,因此工作日的行为和父类一样:

图片

这三个员工,我们都调用了同样的方法名,但是由于大家根据职位对方法进行了改写,所以,输出结果也有所不同。这就体现了多态。

希望本文能帮你建立"面向对象"的初步认知。不知道你看完以后有没有觉得不过如此,非常想动手试一下?但是又苦于之前从没接触过“编辑器”、“环境变量”这些概念。

不要急,请接着看。

在网页跑代码

我在这免费分享给大家一个不用配置复杂的安装环境、就可以跑 Python 代码的方法。

可以去找在线的数据比赛,只需要注册一个账号,就可以去比赛网站上提供的代码练习的地方来跑代码。

优点:

1 云同步:随时随地,同步在个人账号,一般也是云保存的,不用担心丢失和文件存储混乱而找不到;

2 版本隔离:在跑神经网络时,可能会遇到很多第三方库的版本不兼容问题(想要跑一下网上现有的代码的时候,会出现 TensorFlow1.0版本必须要卸载掉原有的numpy13.0,keras 又需要tensor2.3.0版本及以上)。在线上实验室,你就可以随意去折腾各种版本的包,不用担心搞乱的本地的(非要本地跑,推荐构造多个虚拟环境);

3 见贤思齐:更方便的 Fork(复制)网上优秀的代码来做模仿练习和调试。

缺点:

读取文件比较繁琐、偶尔会卡。

图片

如果在Google Colab,每次要读取文件,都需要通过以下代码进行附件的上传:???????

from google.colab import filesuploaded = files.upload()
 

放下手机,拿起电脑,敲起好听的键盘声吧~


参考链接如下:

1 面向对象编程:https://www.liaoxuefeng.com/wiki/1016959663602400/1017495723838528

https://www.runoob.com/python/python-object.html

2 Colab链接:

https://colab.research.google.com/【手写字项目教学https://codelabs.developers.google.com/codelabs/cloud-tensorflow-mnist#1】

3 阿里天池实验室:https://tianchi.aliyun.com/notebook-ai/?spm=5176.12281949.J_9711814210.11.529324489Kp1XX

图片

图片

?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:19:16  更:2021-09-02 11:20:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 22:56:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计