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


    程序设计的三种基本结构: 面向对象,面向过程,函数式编程
     
    1,什么是面向对象编程 
     
    面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。
     
    2,什么是类什么是对象,又有什么关系可以说类是一个函数的集合,看看下面的代码
    class 类:#类名称
         def 函数1()
         pass
         def 函数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 = name
            self.role = role
            self.weapon = weapon
            self.life_value = life_value
            self.money = money
    
        def 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(面向对象的语法和特性)

     
     
  • 相关阅读:
    kibana操作
    git使用入门
    ES增删改查
    MySQL&ES连接池
    java递归生成树结构的数据
    lambda新特性,对两组集合中相同的数据去重
    java8新特性 LocalDateTime,LocalDate ,LocalTime 使用,Period 获取时间差
    photoshop安装包
    java自定义异常及异常的抛出
    git回滚到任意版本
  • 原文地址:https://www.cnblogs.com/sean-yao/p/7712604.html
Copyright © 2020-2023  润新知