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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(面向对象的语法和特性)

 
 

以上是关于Python面向对象学习 1 (什么是面向对象,面向对象的应用场景)的主要内容,如果未能解决你的问题,请参考以下文章

Python学习笔记-面向对象

Python 面向对象

python面向对象

Java基础--面向对象(上)

python学习笔记(十九)面向对象编程,类

了解什么是Python面向对象