面向对象基础

面向对象

面向对象基础

1、面向对象思想简介

  • 面向过程

    自上而下执行 逐步求精

    各模块之间相对简单 在功能上相对独立

    每一模块内 由顺序 、分支、循环结构组成的

  • 面向对象

    把数据、数据操作方法 放在一起 作为一个相互依存的整体 对象对同类对象抽象出其共性 形成类

    类中的大多数数据 只能用本类的方法去处理

    类通过一个简单的接口与外界发生关系

    流程 由用户在使用中决定的

  • 理解面向对象

    • 面向对象是相对面向过程来说

    • 面向对象和面向过程都是一种思想

      面向过程

      关注的是解决问题需要哪些步骤

      面向对象

      将功能封装进对象 强调了具备功能的对象

    • 面向对象是基于面向过程的

    • 面向对象的特点

      是一种符合人们思考的思想

      可以将复杂的事情简单化

      将程序由执行者变成了指挥者

    • 类与对象的关系

      python中描述事物 通过类的形式展现的 类是具体事物的抽象 概念上的定义

      对象是符合该类定义的真实存在的事物的个体

      我们说的汽车、美女、帅哥等等 这些都是类

      比如说 咱班的婷婷、伟哥的桌子那么这些就是真实存在的对象 符合(美女和桌子)类的定义

    • 面向对象的特点

      封装、继承、多态

2、第一个python类

  • 定义

    类名: 首字母大写 遵循标识符的命名规则

    属性:也就是变量 遵循标识符的命名规则

    行为:也就是功能、也就是函数 遵循标识符的命名规则

  • 设计类

    汽车类

    class Car:
    	属性
    	color = '白色'
    	weight = '2吨'
    	jigang = '4'
    	行为
    	def lak(self):
    		print('可以拉乘客')
    
  • 创建类

    • 格式

      class 关键字 类名([类名]):

      ​ pass

    • 说明

      class 是定义类的关键字

      类名 类的名字

      () 继承的父类 如果不写 默认继承object类

    • 实例

      class Test(object):
          pass
      
      # 定义了一个空类
      # 类实例化成为对象
      t = Test()
      print(Test)
      print(t)
      # 获取当前对象是哪个类的实例化
      print(t.__class__)
      ​```
      
  • 创建存在属性与方法的类

      class Person:
          # 属性
          name = '李俊'
          age = 19
          sex = '女'
          facevalue = 'low'
    
          # 行为
          def dbj(self):
              print('造福人类')
    
          def hobby(self):
              print('抽烟、喝酒、烫头')
    

3、使用类实例化对象

  • 格式

    对象名 = 类名([参数])

  • 说明

    参数列表 :为了以后给属性赋值(参数传递)

  • 实例化代码

    # 实例化出李俊对象
    lijun = Person()
    # 调用属性
    print(lijun.name)
    print(lijun.age)
    # 调用方法
    print(lijun.hobby())
    

4、self对象

  • 概述

    • 在类的内部 使用def关键字来定义方法(函数) 与一般函数不同 方法必须存在第一个参数 也就是self 且为第一个参数 self代表的是当前类的实例 而非类
    • self参数名 可以随便写 但是建议使用self
  • 实例

    class Test:
        name = 'lucky'
        age = 18
    
        def say(self):
            print('测试self参数')
    
        # abc 就是外部当前调用的对象(谁调用 abc就是谁)
        # 调用内部的所有属性和方法
        # self叫什么都行  但是统一叫self
        def speak(abc):
            # 验证参数abc 和 外部对象t1的关系
            print(abc)
            print('abc_id', id(abc))
            # 调用属性
            print(abc.name)
            print(abc.age)
            # 使用abc对象 创建对象属性
            abc.sex = 'man'
            abc.say()  # 调用方法
            print(abc.__dict__)
            print('speak方法')
    
    # 对象
    t1 = Test()
    t1.speak()
    print('t1', t1)
    print('t1_id', id(t1))
    # 调用self创建的对象属性 sex
    print(t1.sex)
    # 查看t1对象内部的所有属性和方法
    print(t1.__dict__)
    

    注意

    • self就是当前类实例化的对象 哪个对象调用它 他就是哪个对象
    • self不是必须的名称 但是作为标准 必须叫self
    • self在类的内部使用 用于调用和创建对象属性

6、对象方法的使用

class Test:
    name = 'lucky'
    age = 18

    # def test_args(self, sex, hobby):
    # def test_args(self, sex, hobby, *args):
    # def test_args(self, sex, hobby, **kwargs):
    def test_args(self, sex, hobby, *args, **kwargs):
        # 在调用test_args的时候 创建了对象属性  sex、hobby
        self.sex = sex
        self.hobby = hobby
        print(args)
        print(kwargs)
        return sex, hobby



t1 = Test()
# 调用
t1.test_args('man', '写代码')
t1.test_args(sex='man', hobby='写代码')
t1.test_args('man', '写代码', '非常喜欢写代码', '一天不写代码浑身难受')
print(t1.test_args('man', '写代码', sign1='非常喜欢写代码', sign2='一天不写代码浑身难受'))
print(t1.__dict__)

对象中的方法和函数使用一样(参数、返回值) 但是就多了一个self参数

posted @ 2022-03-18 14:09  寻月隐君  阅读(35)  评论(0编辑  收藏  举报