面向对象(代码片段)

chenxi67 chenxi67     2022-12-25     686

关键词:

一.函数式编程和面向对象的对比

  面向过程:根据业务逻辑从上到下写垒代码

  函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可

  面向对象:对函数进行分类和封装,让开发“更快更好更强...”

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

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

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

请开发一个消息提醒的功能(邮件/短信/微信)

  函数:

def email(em,text):
    """
    发送邮件
    :return:
    """
    print(em,text)

def msg(tel,text):
    """
    发送短信
    :return:
    """
    print(tel,text)

def wechat(num,text):
    """
    发送微信
    :return:
    """
    print(num,text)
####便携功能
if 1==1:
    msg("15258569","网购买了一个学位课")
    email("[email protected]","网购买了一个学位课")
    wechat("xxxx","网购买了一个学位课")
#结果:15258569 网购买了一个学位课
#    [email protected] 网购买了一个学位课
#    xxxx 网购买了一个学位课

  面向对象:

class Message:
    def email(self,em, text):
        """
        发送邮件
        :return:
        """
        print(em, text)

    def msg(sellf,tel,text):
        """
        发送短信
        :return:
        """
        print(tel, text)

    def wechat(self,num, text):
        """
        发送微信
        :return:
        """
        print(num, text)
if 1==1:
    obj = Message()
    obj. msg("15258569","网购买了一个学位课")
    obj.email("[email protected]","网购买了一个学位课")
    obj.wechat("xxxx","网购买了一个学位课")
#结果:15258569 网购买了一个学位课
#    [email protected] 网购买了一个学位课
#    xxxx 网购买了一个学位课

总结:

  函数:定义简单/调用简单

  面向对象:定义复杂/调用复杂,    好处:归类,将某些类似的函数写在一起

  1.函数式编程可能会比面向对象好

  2.Python中支持两种编程方式

  3.面向对象方式格式:

     定义:

               class   类名:         ----定义了一个类

      def  函数名(self):    ---在类中编写了一个"方法" 

      调用:

       x1 = 类名()      ----创建了一个对象/实例化一个对象

       x1.函数名()      ----通过对象调用其中一个方法

  4. 实例

 

class Account:
    def login(self):
        user = input("请输入用户名")
        pwd = input("请输入密码")
        if user =="alex" and pwd =="sb":
            print("登录成功")
        else:
            print("登录失败")
obj = Account()
obj.login()

 

对比  打印

  函数

"""
完成以下功能:
    老狗/20岁/男/上山去砍柴
    老狗/20岁/男/开车去东北
    老狗/20岁/男/喜欢大宝剑
"""
def kc(name, age, gender):
    data = "%s,性别%s,今年%s岁,喜欢上山砍柴" % (name, gender, age)
    print(data)

def db(name, age, gender):
    data = "%s,性别%s,今年%s岁,喜欢开车去东北" % (name, gender, age)
    print(data)

def bj(name, age, gender):
    data = "%s,性别%s,今年%s岁,喜欢大宝剑" % (name, gender, age)
    print(data)

kc(老狗, 20, )
db(老狗, 20, )
bj(老狗, 20, )
# 结果:老狗,性别男,今年20岁,喜欢上山砍柴
#     老狗,性别男,今年20岁,喜欢开车去东北
#     老狗,性别男,今年20岁,喜欢大宝剑

  面向对象:

class LaoGou:
    def __init__(self, name, age, gender):  # 特殊的方法,如果 类名() ,则该方法会被自动执行 (构造方法)
        self.n1 = name
        self.n2 = age
        self.n3 = gender

    def kc(self):
        data = "%s,性别%s,今年%s岁,喜欢上山砍柴" % (self.n1, self.n3, self.n2)
        print(data)

    def db(self):
        data = "%s,性别%s,今年%s岁,喜欢开车去东北" % (self.n1, self.n3, self.n2)
        print(data)

    def bj(self):
        data = "%s,性别%s,今年%s岁,喜欢大宝剑" % (self.n1, self.n3, self.n2)
        print(data)
obj = LaoGou(老狗, 20, )
obj.kc()
obj.db()
obj.bj()
#结果:老狗,性别男,今年20岁,喜欢上山砍柴
#    老狗,性别男,今年20岁,喜欢开车去东北
#    老狗,性别男,今年20岁,喜欢大宝剑

总结:

  1.构造方法

    实例:

class Foo:
    def __init__(self,name):    #构造方法,目的进行数据初始化 
        self.name = name
        self.age = 18
obj = Foo("")

  通过构造方法,可以将数据进行打包,以后使用时,去其中获取即可.

   2.应用

  a. 将数据封装到对象中,以供自己在方法中调用

 

class FileHandler:
    def __init__(self, file_path):
        self.file_path = file_path
        self.f = open(self.file_path, rb)
    def read_first(self):
        # self.f.read()
        # ...
        pass
    def read_last(self):
        # self.f.read()
        # ...
        pass
    def read_second(self):
        # self.f...
        # ...
        pass
obj = FileHandler(C:/xx/xx.log)
obj.read_first()
obj.read_last()
obj.read_second()
obj.f.close()

  b.将数据封装到对象中,以供其他函数调用 

def new_func(arg):
    arg.k1
    arg.k2
    arg.k6
class Foo:
    def __init__(self,k1,k2,k6):
        self.k1 = k1
        self.k2 = k2
        self.k6 = k6
obj = Foo(111,22,333)
new_func(obj)

二.面向对象代码如何编写

  1.规则

class Foo:
    def __init__(self, name):
        self.name = name
    def detail(self, msg):
        print(self.name, msg)
obj = Foo("")
obj.detail("")

  2.什么时候写?

   方式一方向:归类+提取公共值

   方式二正向:在指定类中编写和当前类相关的所有代码 + 提取公共值

三.面向对象的三大特性:封装/继承/多态 

  1.封装:

   将相关功能封装到一个类中:

class Message:
    def email(self):pass
    def msg(self):pass
    def wechat(self):pass

   将数据封装到一个对象中:

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender
obj = Person(孙福来, 18, )

  2.继承:

class Base:  # 父类,基类
    def f2(self):
        print(f2)
class Foo(Base):  # 子类,派生类
    def f1(self):
        print(f1)
obj = Foo()
obj.f1()
obj.f2()
#结果: f1   f2

原则:先在自己类中找,没有就去父类

总结:

  1.继承编写

  class Foo(父类):

    pass

  2.支持多继承(先找左/再找右)

  3.为什么要有多继承?

    提供代码重用性

  3.多态

    多种形态或多种状态

 

面向对象概述(代码片段)

1.1面向对象思想1.1.1面向过程思想与面向对象思想A:什么是面向过程面向过程,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。例如:吃煎饼果子利用面向过程的思... 查看详情

面向对象(代码片段)

结构化程序设计和面向对象程序设计的区别面向过程,以函数为中心吃(猪八戒,西瓜)面向对象,以对象为中心猪八戒.吃(西瓜)面向对象更接近自然语法。面向对象的基本特征(缺一不可)抽象封装继承多态JavaScript也使用... 查看详情

面向对象(代码片段)

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

php面向对象(代码片段)

1.面向对象介绍     面向对象是一个编程思想。编程思想有面向过程和面向对象     面向过程:编程思路集中的是过程上     面向对象:编程思路集中在参与的对象2.面向对... 查看详情

go语言面向对象(代码片段)

面向对象基本概念面向对象思想面向对象(ObjectOriented,OO)是软件开发方法面向对象是一种对现实世界抽象的理解,是计算机编程技术发展到一定阶段后的产物ObjectOrientedProgramming-OOP——面向对象编程面向对象和面向过程区别面... 查看详情

面向对象简介(代码片段)

一、学习目标1.面向对象的技术语法2.面向对象的编程思想二、面向对象的概念OOP(Object-Programming,面向对象的编程)技术为编程人员敞开了一扇大门,使其编程的代码更简洁、更易于维护,并且具有更强的可重用性。三、OOP达到了... 查看详情

面向对象编程(代码片段)

面向对象编程文章目录面向对象编程两种编程方式类和对象的定义面向对象编程三步骤一、定义类二、造对象三、发消息案例静态方法、类方法面向对象解决实际问题魔术方法面向对象四大支柱继承多态对象之间的关系最终总结... 查看详情

python之面向对象(代码片段)

一、三大编程范式python是一门面向对象的编程语言。不同的编程样式有不同的风格,不同的风格有他不同的牛逼之处。三大编程范式:面向过程编程函数式编程面向对象编程二、面向对象设计与面向对象编程面向对象设计(Object... 查看详情

面向对象(oop)基本概念(代码片段)

面向对象编程--ObjectOrientedProgramming简称OOP目标了解面向对象基本概念0.1面向对象基本概念面向过程和面向对象,是两种不同的编程方式对比面向过程的特点,可以更好第了解什么是面向对象1.1过程和函数过程是早期的一个编程概... 查看详情

面向对象入门(代码片段)

  面向对象是软件开发方法。面向对象的概念和应用已经超越了程序设计和软件开发,电影《无间道》的拍摄就用了面向对象的思想。面向对象是一种对现实世界理解和抽象的方法。  那python中的面向对象是什么样的呢?什... 查看详情

javascriptjavascript面向对象(代码片段)

查看详情

phpmysqli面向对象(代码片段)

查看详情

初始面向对象(代码片段)

面向过程:一切以事务的发展流程为中心.面向对象:一切以对象为中心.一切皆为对象.具体的某一个事务就是对象打比方:大象进冰箱步骤:第一步,开门,第二步,装大象,第三步,关门面向对象:大象,你进冰箱.此时主语是大象.我操纵的... 查看详情

面向对象——面向对象进阶(代码片段)

一、isinstance与issubclass方法1、isinstance是用来判断对象是否是某个类  isinstance(obj,class)2、issubclass是用来判断一个类是否为另一个类的子类  issubclass(Bar,Foo)1classFoo:2pass345classBar(Foo):6pass789obj=Foo()10print(isinstance(obj,Foo) 查看详情

面向对象(代码片段)

面向对象标签(空格分隔):面向对象面向对象:类:任何事物归为一类,就是一系列相似特征与技能的结合体;强调:站在不同的角度得到的分类是不一样的;对象和类:在现实世界中:先有对象,后有总结出来的类在程序中... 查看详情

面向对象编程(上)(代码片段)

第四章面向对象编程(上)4.1面向对象(OOP)和面向过程(POP)4.2Java语言的基本元素:类和对象4.3对象的创建和使用4.1面向对象(OOP)和面向过程(POP)面向对象和面向过程二者都是一种思想,面向对象是相对于面向过程而... 查看详情

第一小节初识面向对象(代码片段)

阅读目录楔子面向过程vs面向对象初识面向对象  类的相关知识  对象的相关知识  对象之间的交互  类命名空间与对象、实例的命名空间  类的组合用法  初识面向对象小结面向对象的三大特性  继承  多态... 查看详情

面向过程与面向对象(代码片段)

一.面向过程与面向对象: 面向过程: 重过程:解决问题,考虑的是解决问题的流程 解决问题的思路清晰,但拓展性不强  面向对象: 重对象:解决问题,找到解决问题的对象 解决问题的思路可能不止... 查看详情