zoukankan      html  css  js  c++  java
  • 面向对象

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

      对比:

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

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

      总结:

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

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

        3.面向对象方式格式:

          定义:

            class 类名:        定义了一个类

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

                pass

          调用:

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

            x2.函数名         通过对象调用其中一个方法

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

        构造方法:   

    class Foo:
        
        def __init__(self,name):     构造方法,目的进行数据初始化.
            self.name = name 
            self.age = 18 
    
    obj = Foo('asd')
    
    通过构造方法,可以将数据进行打包,以后使用时,去其中获取即可.

        应用:

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

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

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

      1.规则

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

      2.写法:

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

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

    三、面向对象三大特性:封装、继承、多态

      封装:

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

    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('asd',18,'')        

      继承:提供代码重用性

    class SuperBase:
            def f3(self):
                print('f3')
    
        class Base(SuperBase):  # 父类,基类
            def f2(self):
                print('f2')
    
        class Foo(Base):        # 子类,派生类
            
            def f1(self):
                print('f1')
                
        obj = Foo()
        obj.f1()
        obj.f2()
        obj.f3()
        # 原则:现在自己类中找,么有就去父类

        支持多继承(先找左,再找右)

      多态:

        多种形态或多种状态

        鸭子模式,只要可以嘎嘎加就是鸭子

        python原生支持多态,所以没有特殊性

  • 相关阅读:
    git connection due to public key issue
    ubuntu search and java write to file
    url
    sort by datetime
    work on ui
    PHP工厂方法模式
    PHP的简单工厂模式
    php如何判断数组是一维还是多维
    nginx搭建分布式简单配置
    python的单例模式
  • 原文地址:https://www.cnblogs.com/qq849784670/p/9542222.html
Copyright © 2011-2022 走看看