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

    面向过程与面向对象的比较:
    1、面向过程编程
    核心是”过程“二字,过程指的是解决问题的步骤,即先干什么再干什么
    基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式

    优点:复杂的问题流程化、进而简单化
    缺点:可扩展性差

    2、面向对象
    核心”对象“二字,对象指的是特征与技能的结合体,
    基于该思想编写程序就好比在创造一个世界,你就是这个世界的上帝,是一种
    上帝式的思维方式

    优点:可扩展性强
    缺点:编程的复杂度高于面向过程


    一、面向对象
    面向对象核心是对象二字,对象是特征与技能的结合体,基于面向对象编写程序
    就好比在创造 一个世界,你就是这个世界上帝,也就说,上帝需要创造出一个个的具体
    存在的对象,程序的执行就是由对象直接交互完成

    优点:可扩展性强
    缺点:编程的复杂度远高于面向过程



    对象是特征与技能的结合体,在程序中
    特征:变量
    技能:函数

    类是一系列对象相似的特征与技能的结合体

    2、定义类
    1、在现实生活中:现实中对象-----总结归纳------》现象中类
    2、在程序中:必须先定义类------》调用类------》对象
    class OldboyStudent:
    # 对象们相似的特征
    school="oldboy"
    # 对象们相似的技能
    def learn(self):
    print('is learning')

    在类定义阶段就会立刻执行类体代码,会产生类的名称空间,将执行类体代码过程中产生的名字
    存放于类的名称空间,如何查看
    OldboyStudent.__dict__
    OldboyStudent.__dict__['school']
    OldboyStudent.school # OldboyStudent.__dict__['school']
    OldboyStudent.learn
    OldboyStudent.learn(123)
    1 #python为类内置的特殊属性
    2 类名.__name__# 类的名字(字符串)
    3 类名.__doc__# 类的文档字符串
    4 类名.__base__# 类的第一个父类(在讲继承时会讲)
    5 类名.__bases__# 类所有父类构成的元组(在讲继承时会讲)
    6 类名.__dict__# 类的字典属性
    7 类名.__module__# 类定义所在的模块
    8 类名.__class__# 实例对应的类(仅新式类中)
    的特殊属性
    ''''
    1、类
    对象是特征与技能的结合体,那类就是一系列对象相同的特征与技能的结合体

    2、在现实世界中:一定先有对象,后来随着人类文明的发展总结出的类
    对象是具体存在的,而类只是一种抽象概念

    3、在程序中,务必保证:先定义类,后调用类来产生对象


    现实生活中的对象:
    对象1:
    特征:
    school="Oldboy"
    name="马冬梅"
    age=18
    sex="female"
    技能:
    学习
    选课

    对象2:
    特征:
    school="Oldboy"
    name="甜蜜蜜"
    age=21
    sex="male"
    技能:
    学习
    选课

    对象3:
    特征:
    school="Oldboy"
    name="原石开"
    age=22
    sex="male"
    技能:
    学习
    选课

    现实生活中的老男孩学生类:
    相同的特征
    school="Oldboy"
    相同的技能
    学习
    选课
    '''
    #1、程序中的类
    class OldboyStudent:
    # 用变量表示特征
    school="Oldboy"
    #
    # 用函数表示技能
    def learn(self):
    print('is learning...')

    def choose(self):
    print('choose course...')

    # print('======>') #在定义阶段就就已经执行,不同于之前学的函数

    # 注意:在定义类的阶段会立刻执行类体内的代码,然后将产生的名字存放于类名称空间中
    # print(OldboyStudent.__dict__)
    # print(OldboyStudent.__dict__['school']) #类名.__dict__# 类的字典属性类的字典属性=》Oldboy
    print(OldboyStudent.__dict__['learn']) #打印为类中函数的内存地址=》<function OldboyStudent.learn at 0x0000000002202B70>
    # OldboyStudent.__dict__['learn'](123) #类的字典属性,函数名加括号即调用类中的函数=》is learning...

    # print(OldboyStudent.school) # OldboyStudent.__dict__['school']
    # print(OldboyStudent.learn) # OldboyStudent.__dict__['learn']
    # OldboyStudent.learn('xxx')
    # OldboyStudent.learn('xxx')

    #
    # OldboyStudent.country='China'
    # OldboyStudent.school='偶的博爱'
    #
    # del OldboyStudent.country
    # print(OldboyStudent.__dict__)

      



  • 相关阅读:
    hadoopfs: 未找到命令...
    WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    centos 7 安装音乐播放器(亲测可用)(转载)
    Linux 脚本编写基础
    Zip加密
    Qt嵌入cef3关闭窗口时崩溃的问题
    C++11多线程基础
    C++11多线程(std::atomic)
    C++11多线程(thread_local)
    VS 新建RelWithDebInfo模式
  • 原文地址:https://www.cnblogs.com/sui776265233/p/8809146.html
Copyright © 2011-2022 走看看