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

     1.面向过程 vs 函数式编程
    面向过程:
    s1 = 'asdfqweqmvas'
    count = 0
    for i in s1:
        count += 1
    print(count)
    
    lst = [i for i in range(100)]
    count = 0
    for i in lst:
        count += 1
    print(count)
    函数式编程
    def func(num):
        count = 0
        for i in num:
            count += 1
        return count
    print(func('asdfqweqmvas'))
    print(func(i for i in range(100)))

     函数体编程相较与面向过程编程:

    1.减少代码的重用性
    2.增强代码的可读性

    2.
    函数式编程 vs 面向对象编程
    类:就是具有相同属性和功能的一类事物
    对象:就是类的具体体现
    面向对象编程的优点第一个:是一类功能函数的集合,使你的代码更清晰化,合理化
    第二个优点:面向对象,要拥有上帝视角看问题,类其实就是一个公共模板,对象就是从具体的模板实例化出来的
          对象去操作使用这个公共模板

    3.类的结构:
    class human():
        '''
        此类主要是构建人类
        '''
        mind = '有思想'    #第一部分 静态属性 (属性,静态变量,静态字段)
        body = '有四肢'
        def think(self):    #第二部分 动态属性  (方法,函数)
            print(666)
    
    
    class 是类的关键字,定义一个类
    human是这个类的类名
    类的结构从大方向来说分为两部分:静态变量,动态方法

    4.类名操作静态属性
    查看类中所有的方法  __dict__
    class human:
        mind = '思想'
        body = {'眼睛':'','':'','耳朵':''}
        def work(self):
            print('人会工作')
    # print(human.__dict__)  #查看类中的所有,以字典的形式输出
    print(human.__dict__['mind'])   #思想
    通过__dict__方法,只能进行查询,不能进行增删改
    一般不用于单独的属性查询

    5.万能的点
    class Computer:
        screen = '显示画面'
        processor = '处理数据'
        def memory(self):
            print('电脑')
    print(Computer.screen)   #利用类名查询静态变量
    Computer.screen = '动态画面'  #利用类名改变静态变量的值
    print(Computer.screen)
    del Computer.screen         #利用类名删除静态变量的值
    print(Computer.__dict__)
    Computer.mouse = '鼠标'         #利用类增加静态变量
    print(Computer.__dict__)
    类名对静态变量的操作总结:
    查看类的全部时,用__dict__.
    对单个属性进行操作时,用万能的点

    6.类名操作动态方法:
    前提:除了两个特殊方法:静态方法,类方法之外,不会用类名去操作一个类中的方法
    class Computer:
        screen = '显示画面'
        processor = '处理数据'
        def memory(self):
            print('牛逼')
    Computer.memory(111)    #将参数传给self
    Computer.__dict__['memory'](111)#也可以用,但是不用
     
    7.
    什么是对象?
        对象是从类中出来的,只要是类名加上(),这就是实例化的过程,这样会实例化一个对象
    class human:
        mind = '思想'
        def name(self):
            print("第一个")
            print(self)
        def __init__(self):
            print('第二个')
        def leg(self):
            print('第三个')
    obj = human()       #只要是实例化出对象,就会执行__init__方法
    print(obj)
    #obj的地址跟self的地址一样
    实例化一个对象总共发生了三件事:
    1.内存中开辟了一个对象空间
    2.自动执行类中的__init__方法,并对这个对象空间的内存地址传递给__init__的第一个位置参数self
    3.在__init__方法中通过self给对象空间添加属性
    class Human:
        mind = '有思想'
        language = '使用语言'
        def __init__(self,name,sex,age,hobby):
            # self 和 obj 指向的是同一个内存地址同一个空间,下面就是通过self给这个对象空间封装四个属性。
            self.n = name
            self.s = sex
            self.a = age
            self.h = hobby
    obj = Human('barry','',18,'运动')  #类名+()为对象
    print(obj.__dict__)     查看对象的空间属性
    #{'n': 'barry', 's': '男', 'a': 18, 'h': '运动'}

    8.对象操作对象的空间属性
    对象操作对象的空间属性: __dict__
    对象名+__dict__ #查询对象中的所有属性 对象.__dict__
    对象操作对象中的单个属性.万能的点
    class human:
        mind = '有思想'
        def __init__(self,name,age,sex):
            self.n = name
            self.a = age    #通过self 将属性封装给对象obj  方便利用对象进行调用
            self.s = sex
    obj = human('牛逼',18,'')
    obj.job = 'IT'      #
    del obj.n           #
    obj.s = ''         #改      
    print(obj.s)        #
    print(obj.__dict__)

     8 从对象中操作类的操作:

    class human:
        mind = '有思想'
        def __init__(self,name,age,sex):
            self.n = name
            self.a = age
            self.s = sex
    obj = human('牛逼',18,'')
    print(obj.mind)# 对象查询类中的静态属性
    class Human:
        mind = '有思想'
        language = '实用语言'
        def __init__(self,name,sex,age,hobby):
            self.n = name
            self.s = sex
            self.a = age
            self.h = hobby
        def work(self):
            print(self)
            print('人类会工作')
        def tools(self):
            print('人类会使用工具')
    obj = Human('barry','',18,'运动')
    obj.work()
    obj.tools()

     对象查看类中的静态方法 ,只能查看

    类中的方法一般都是通过对象执行的,

    并且对象执行这些方法后都会将空间地址,
    传给方法中的第一个参数self
    self 就是类中方法(函数)的第一个参数,代表的就是这个对象
    一个类可以实例化多个对象

  • 相关阅读:
    解决一起web 页面被劫持的案例
    django rest framwork教程之外键关系和超链接
    django restframwork 教程之authentication权限
    Puppet nginx+passenger模式配置
    Django restframwork教程之类视图(class-based views)
    使用emplace操作
    C++中的显示类型转换
    整数加法
    在不知道学生人数和每个学生课程数量的情况下对学生的平均成绩排序
    树的高度
  • 原文地址:https://www.cnblogs.com/shicongcong0910/p/10309806.html
Copyright © 2011-2022 走看看