python学习进阶之面向对象(二) - 实践

1.面向对象编程介绍

1.1 基本概念

  • 概念:面向对象编程(Object-Oriented Programming, OOP)是一种流行的编程范式,它以"对象"为核心组织代码和数据
  • 在面向对象的世界里: 万事万物皆对象

1.2 面相过程和面向对象

  • 面向过程:
    • 根据需求,将某些独立功能封装成一个又 一个函数
    • 最后完成的代码,就是顺序地调用不同的 函数
  • 面相对象:
    • 相比较函数,面向对象是更大的封装,根 据职责在一个对象中封装多个方法
    • 根据职责确定不同的对象,在对象内部封 装不同的方法

1.3 类和对象的概念

  • :是对具有相同特征或者行为的事物的一个统称, 是抽象的,不能直接使用
    • 主要内容:
      • 特征(静态) -> 属性
      • 行为(动态) -> 方法
    • 类的设计
      • 注意:
        • 大驼峰命名法: 所有单词第一个字 母大写, 单词之间没有下划线
        • 类名的提取:使用名词提炼法分析整个业务流程, 得出的名词, 通常就是类名
        • 对于需求中没有提到的属性方法, 在设计类的时候不要添加进来!
      • 想要设计一个类, 通常需要满足以下三个要素
        • 类名: 同类事物的名字, 命名要满足大驼峰命名法
        • 属性: 同类事物具备的特征
        • 方法: 同类事物具备的行为
  • 对象: 是由类创建出来的一个具体存在的事物, 可以 直接使用
    • 说明:由哪一个类创建出来的对象, 就拥有在哪一个 类中定义的属性和方法

2.面向对象基本语法

2.1 类的定义

  • 定义类的步骤

    • 定义类
    • 通过类创建对象
  • self参数

    • 说明:由哪一个对象调用的方法, 方法内的self 就是哪一个对象的引用
    • 注意:
      • 在类封装的方法中,通过self. 访问对象的属性和方法
      • 在类的外部,通过对象变量名. 访问对象的属性和方法
  • 实例化:

    • 在Python中,由类创建对象的操作又被称之为实例化
    • 通过一个类可以创建多个对象
  • 初始化方法

    • 当使用类名() 创建对象时,会自动执行以下操作:

      • 1)为对象在内存中分配空间——创建对象
      • 2)为对象的属性设置初始值——初始化方法(init)
    • 这个初始化方法就是__init__ 方法,init 是对象的内置方法

    • _init_ 方法是专门用来定义一个类具有哪些属性的方法

    • 在初始化方法中增加对象属性

      1. 把希望设置的属性值,定义成__init__ 方法的参数
      2. 在方法内部使用self.属性= 形参接收外部传递的参数
      3. 在创建对象时,使用类名(属性1, 属性2...) 调用
    • 总结:初始化方法就是指的__init__()方法,创建对象的时候会自动调 用,用来定义类具有哪些属性

  • 语法格式

    # 定义类
    class Person
    :
    # 类属性(所有实例共享)
    species = "Homo sapiens"
    # 初始化方法(构造函数)
    def __init__(self, name, age):
    # 实例属性
    self.name = name
    self.age = age
    # 实例方法
    def greet(self):
    return f"你好,我叫{
    self.name
    },今年{
    self.age
    }岁"
    # 创建对象 
    # 实例化对象(在Python中,由类创建对象的操作又被称之为实例化)
    person1 = Person("张三", 25)
    person2 = Person("李四", 30)
    # 访问属性和方法
    print(person1.name) # 张三
    print(person2.greet()) # 你好,我叫李四,今年30岁
    print(Person.species) # Homo sapiens
  • 举例1

    # 需求:小猫爱吃鱼,小猫要喝水
    class Cat
    :
    """这是一个猫类"""
    def eat(self):
    print("小猫爱吃鱼")
    def drink(self):
    print("小猫在喝水")
    # 通过Cat类创建tom对象
    tom = Cat()
    tom.drink()
    tom.eat()
    print("-"*20)
    # 通过Cat类创建lazy_cat对象
    lazy_cat = Cat()
    lazy_cat.eat()
    lazy_cat.drink()
    # 可以通过直接打印两个对象变量, 或者使用Python内置函数id(),查看两个对象的信息
    print("-"*20)
    print(f"tom对象的内存地址{
    id(tom)
    }")
    print(f"lazy_cat对象的内存地址{
    id(lazy_cat)
    }")
    # 运行结果
    小猫在喝水
    小猫爱吃鱼
    --------------------
    小猫爱吃鱼
    小猫在喝水
    --------------------
    tom对象的内存地址2188968061528
    lazy_cat对象的内存地址2188968061808
  • 举例2

    在这里插入图片描述

    # 类名:狗
    # 属性:名字、年龄、身高、体重...
    # 方法:吃、跑、拿耗子...
    class Dog
    (object):
    def __init__(self, name, age, height, weight):
    """
    狗狗的属性
    :param name: 姓名
    :param age: 年龄
    :param height: 身高
    :param weight: 体重
    """
    self.name = name
    self.age = age
    self.height = height
    self.weight = weight
    def run(self):
posted @ 2025-09-15 20:39  yjbjingcha  阅读(13)  评论(0)    收藏  举报