Python学习之旅 —— 基础篇面向对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习之旅 —— 基础篇面向对象相关的知识,希望对你有一定的参考价值。

概述

  • 面向过程:根据业务逻辑从上到下写垒代码
  • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
  • 面向对象:对函数进行分类和封装,让开发“更快更好更强...”

对比示例:函数式变成和面向对象编程

连接数据库的增删改查

# 函数式编程
def slect(host, username, password, sql):
    pass


def create(host, username, password, database):
    pass


def remove(host, username, password, table):
    pass


def modify(host, username, password, nid):
    pass

# 调用函数
hostname = "db01.renrenche.com"
user = "admin"
pwd = "123"
slect(hostname, user, pwd, "select * from db1")
create(hostname, user, pwd, "db1")
remove(hostname, user, pwd, "table1")
modify(hostname, user, pwd, "id01")
# 面向对象编程
# 01 创建类
class SQLHeper:
    def slect(self, sql):
        print(self.hostname)
        print(sql)


    def create(self, database):
        pass

    def remove(self, table):
        pass

    def modify(self, nid):
        pass

# 02 创建对象
obj = SQLHeper()

# 03 定义公共参数
obj.hostname = "db01.renrenche.com"
obj.user = "admin"
obj.pwd = "123"

# 04 调用类的方法
obj.slect("select * from db1")
obj.create("db1")
obj.remove("table1")
obj.modify("id")

一、创建类和对象

面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。

  类就是一个模板,模板里可以包含多个函数,函数里实现一些功能

  对象则是根据模板创建的实例,通过实例对象可以执行类中的函数

技术分享

  • class是关键字,表示类
  • 创建对象,类名称后加括号即可

 

二、面向对象的三大特性:

面向对象的三大特性是指:封装、继承和多态。

1、封装

引入__init__()方法:

# 01 创建类
class SQLHeper:
    def __init__(self, host, username, password):
        self.hostname = host
        self.user = username
        self.pwd = password

    def slect(self, sql):
        print(self.hostname)
        print(sql)

    def create(self, database):
        pass

    def remove(self, table):
        pass

    def modify(self, nid):
        pass

# 02 创建对象
obj1 = SQLHeper("test1.rrc.com", "admin01", "123", )
obj2 = SQLHeper("test2.rrc.com", "admin02", "456", )


# 03 调用类的方法
obj1.slect("select * from db1")
obj2.slect("select count(*) from db2")

 

不止可以封装普通参数,可以封装任何参数

技术分享
# 类的对象可以封装任何参数
class c1:
    def __init__(self, name, obj):
        self.name = name
        self.obj1 = obj


class c2:
    def __init__(self, job, age):
        self.job = job
        self.age = age

    def show(self):
        print(self.job)


class c3:
    def __init__(self, aaa):
        self.abc = aaa


c2_obj = c2("IT", 18)
c1_obj = c1("Pesen", c2_obj)


print(c1_obj.obj1.age)

c3_obj = c3(c1_obj)

# 通过c3 调用c2的show方法
c3_obj.abc.obj1.show()
封装一个类

 

2、继承

继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。

对于面向对象的继承来说,其实就是将多个类共有的方法提取到父类中,子类仅需继承父类而不必一一实现每个方法。

class Foo1:  # Foo1是Foo2的父类(基类)
    def show(self, name):
        print("F1.show", name)


class Foo2(Foo1):  # Foo2是Foo1的子类(派生类)
    def __init__(self, name):
        self.name = name

    def bar(self):
        print("bar")

    def show(self, name):
        print("F2.show", name)

obj = Foo2("aaa")
obj.bar()
obj.show("Pesen")  # 优先执行自己的方法

 

python有一个特殊的继承方式就是多继承

 

以上是关于Python学习之旅 —— 基础篇面向对象的主要内容,如果未能解决你的问题,请参考以下文章

python之旅六第七篇面向对象

[Python]学习基础篇:面向对象编程

Scala之旅-简介篇

python之旅六第七篇面向对象之类成员

Python学习之旅 —— 基础篇模

python基础篇之面向对象