Python面向对象学习 1 (什么是面向对象,面向对象的应用场景,待更新)

程序设计的三种基本结构: 面向对象,面向过程,函数式编程
1,什么是面向对象编程 
面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。
2,什么是类什么是对象,又有什么关系可以说类是一个函数的集合,看看下面的代码
class 类:#类名称def 函数1()passdef 函数2()pass
obj=类() #创建一个对象,实例化的过程
obj.函数1()#方法
3,什么时候适用面向对象呢?
当我们想写一个机器上传文件并执行命令的脚本,我们可以用面向过程的方法,利用函数写成这个样子:
def upload():#连接服务器#上传文件#关闭连接pass
def cmd():#连接服务器#执行命令#关闭连接pass
def upload_cmd():#连接服务器#上传文件#执行命令#关闭连接pass

也可以这样

def connect():#连接服务器pass
def close():#断开连接pass
def upload():connect()#上传文件
    close()pass
def cmd():connect()#执行命令
    close()pass
def upload_cmd():connect()upload()cmd()close()pass

感觉好像有点繁琐,总归是处理了,那么,如果用面向对象会如何呢?

class SSH(object):def __init__(self,host,port,pwd,username):self.host = host...def connection(self):self.connection = 和服务器创建对象()        def  close(self):#关闭
        self.connection.关闭def upload(self):self.connection() #使用连接上传文件def cmd(self):self.connection()#使用执行命令
        
obj = SSH('',host,port....)
obj.connection()
obj.upload()
obj.close()

我们把公共的功能,提取出来,还可以创建属于对象的属性,其他方法可以使用,这样不是更好么?

还有一种使用场景,就是类似于模板化,实例代码如下:

class Role(object):def __init__(self, name, role, weapon, life_value=100, money=15000):self.name = nameself.role = roleself.weapon = weaponself.life_value = life_valueself.money = moneydef shot(self):print("%s shooting..." %self.name)self.__heart = "Die"print(self.__heart)def got_shot(self,):print("%s say : ah...,I got shot..." %self.name)def buy_gun(self, gun_name):print("%s just bought %s" %(self.name,gun_name))self.weapon = gun_name #通过类可以改对象的属性

r1 = Role('Alex', 'police', 'AK47') #生成一个角色
r2 = Role('Jack', 'terrorist', 'B22')  #生成一个角色

结论:

 面向对象不会写,也能实现和满足功能,就是比较麻烦,而面向对象简单的就能实现,但是无论我们用什么形式编程,我们都要明确记住一下原则:
 
1.写重复代码是非常不好的低级行为
2.你写的代码需要经常变更所以需要他可读性好,易扩展
3. 面向过程编程与OOP的主要区别就是 OOP 使程序更加容易扩展和易更改

下一篇文章会将面向对象的语法和特性总结:

Python面向对象学习2(面向对象的语法和特性)

转载于:https://www.cnblogs.com/sean-yao/p/7712604.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iPhone屏幕大小和适配建议(包括 XR XS XSM )

//4 ----:{{0, 0}, {320, 480}} //5、5s ----:{{0, 0}, {320, 568}} //6、6s、7、8 ----:{{0, 0}, {375, 667}} //6P、7P、8P ----:{{0, 0}, {414, 736}} 复制代码X 系列 //X ----:{{0, 0}, {375, 812}} //XR ----:{{0, 0}, {414, 896}} //XS ----:{{0, 0}, {375, 812}} //XSM …

go语言中的方法method

package main;import "fmt"//重新定义一个类型 //为该INT类型扩展方法 type INT int;type A struct {name string; }type B struct {name string; }func main() {a : A{};a.Print();//指针传递a.Print2();fmt.Println(a);//同上(*A).Print2(&a);b : B{};b.Print(…

微信自定义tabbar有小红点_自定义微信小程序tabBar组件上边框的颜色

背景:在微信小程序的实际开发过程中,有时候我们需要修改微信小程序提供的 tabBar 组件顶部边框的颜色,以满足项目需求解决方案:方式一:通过tabBar组件自带的 borderStyle 属性来控制边框的颜色,将边框的颜色…

又一批优质.NET6实战项目,面临永久下线...

多好的实战项目大家抓紧时间实操起来呀移动电商实战这次能上岸,最重要的是这个Vue3VantUI.NET6SqlSugar移动电商实战,全部都是最新最热的技术栈,写上简历后面试基本上都是问的这块儿内容。我先给大家看看项目的UI。项目UI全套实战源码这个电商…

laravel 配置微信公众号时{errcode:-106,errmsg:token check fail}

一、问题描述 做微信授权登录时,遇到的一个坑,提示配置失败,F12,响应为 errcode":-106,"errmsg":"token check fail 二、解决方案: 注:宗旨就是让微信能够访问你填写的网址&#xff…

电商企业怎样用好大数据

电商企业怎样用好大数据 大数据正在促生新的蓝海,催生新的经济增长点,正在成为政府和企业竞争的新焦点。2012年,瑞士达沃斯论坛发布《大数据,大影响》报告,称“数据已经成为一种新的经济资产类别,就像货币或…

ORACLE经常使用系统查询

1 查询系统全部对象 SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, LAST_DDL_TIME, TIMESTAMP, STATUS FROM DBA_OBJECTS WHERE OWNERUPPER(SCOTT) 2 查看系统全部表 SELECT OWNER, TABLE_NAME, TABLESPACE_NAME FROM DBA_TABLES 3 查看全部用…

Safari 版本回退方法

回退条件 版本回退的前提是关闭电脑的SIP机制,命令行 csrutil status 检测状态。Mac os 10.14以下版本回退Safari后插件还是可以用的,升了新系统退了也没法用了。我的是旧系统 SIP关闭方法 1 重启MAC,按住cmdR直到屏幕上出现苹果的标志和进度…

同步方法 调用异步防范_Spring一个注解实现方法的异步调用,再也不用单开线程了...

介绍同步调用先来演示一下什么是同步调用测试方法输出如下doTaskOne start 1566121320372doTaskOne end 1566121321373doTaskTwo start 1566121321373doTaskTwo end 1566121322374可以看到方法一执行完毕,方法二才会执行异步调用不返回值1.Spring Boot启动类上加Ena…

使用docker搭建redis主从

一、构建 Docker 环境 1、创建 dockerfile FROM centos:latest RUN groupadd -r redis && useradd -r -g redis redis RUN yum -y update && yum -y install epel-release && yum -y install redis && yum -y install net-tools EXPOSE 63…

【源码探索】.NET中的List,是哪种数据结构

“当你提出疑问并开始思考时&#xff0c;答案就离你不远了”图片&#xff1a;奥森公园的向日葵 拍摄于2022年7月23日 摄影师&#xff1a;刘先生01—问题缘起严格来说应该是List<T>&#xff0c;因为.NET的核心基础类库中&#xff0c;并没有List&#xff0c;作为泛型类型的…

dpdk对虚拟化的支持调研

目录&#xff1a; 虚拟化dpdk的实现研究 virtiovhostSR-IOV热迁移相关研究拓展本文记录近期对dpdk在虚拟化和云计算领域应用的研究成果&#xff0c;内容梳理如下。 虚拟化 虚拟化&#xff0c;抽象来说&#xff0c;就是将物理资源逻辑化。具体来说&#xff0c;虚拟技术的实现是在…

服务器环境

一 linux 系统搭建Java项目环境 1 环境准备&#xff1a;jdk,tomcat, nginx,reids,mysql jdk:java环境 Tomcat&#xff1a;Java项目服务器 nginx&#xff1a;项目静态资源&#xff0c;域名解析&#xff08;ssl&#xff09; redis: 项目可能会用到 mysql: 数据库 环境转载于:htt…

隐藏键盘_三星新专利:带有隐藏键盘的三折叠屏手机

10月31日消息 众所周知&#xff0c;三星现已推出四款折叠屏机型(Fold、Fold 2、Z Flip、W20)&#xff0c;而此前多有传言表示三星下一代折叠屏机型(以 Galaxy Z Fold 3 代称)将在目前折叠屏手机的基础上增加 S Pen&#xff0c;而昨日公布的一份专利也侧面辅证了这一说法。此外&…

Blazor学习之旅(3)实现一个Todo应用

【Blazor】| 总结/Edison Zhou大家好&#xff0c;我是Edison。最近在学习Blazor做全栈开发&#xff0c;因此根据老习惯&#xff0c;我会将我的学习过程记录下来&#xff0c;一来体系化整理&#xff0c;二来作为笔记供将来翻看。本篇&#xff0c;我们通过一个简单的Todo示例应用…

JavaScript 省市级联效果

为什么80%的码农都做不了架构师&#xff1f;>>> JavaScript 省市级联效果 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">2 <html xmlns"http…

20分钟完成Mac上的 LNMP 环境部署,优雅·高效开发(Docker方式)

一、前言 对于很多开发者来说&#xff0c;突然转到在 mac 系统开发&#xff0c;可能会非常难受&#xff0c;主要有以下几个原因 1、mac 上安装软件程序坑多&#xff0c;比如安装 PHP、Nginx&#xff0c;会存在很多使用 linux 或 windows 时没有遇到过的坑 2、对 mac 系统不熟…

可编程交换时代就在这里

在第一批网络处理器推出20年后&#xff0c;我们正在向完全可编程数据平面迈进&#xff0c;网络运营商在虚拟化方面的努力推动了这一趋势的发展。 大多数物理网络系统正在被运行在网络核心和边缘的服务器上的虚拟网络功能&#xff08;VNF&#xff09;取代。这些服务器一般采用通…

【智力大冲浪】

【智力大冲浪】riddle内存限制&#xff1a; 128M【题目描述】例 1 智力大冲浪&#xff08;riddle.pas&#xff09;。【题目描述】小伟报名参加中央电视台的智力大冲浪节目。本次挑战赛吸引了众多参赛者&#xff0c;主持人为了表彰大家的勇气&#xff0c;先奖励每个参赛者 m 元。…

调试 不弹出 小米_时隔六年,小米NFC碰碰贴复活,碰一下自动亮灯、联网、投屏...

有朋友问我&#xff0c;NFC除了刷门禁、刷公交、离线支付外&#xff0c;还能干什么&#xff1f;实际上NFC的应用场景远不止于此&#xff0c;今天就带大家开开眼界。今年是小米十周年&#xff0c;各种酷玩新品不断&#xff0c;其中“小米碰碰贴2”就是一款便宜又好玩的产品。小米…