6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3

🎯 今日目标

  • 理解类(class)和对象(object)的关系
  • 学会定义类的属性、方法和构造函数(init
  • 掌握对象的创建与使用
  • 初识封装、继承和多态的基本概念(预告)

📘 什么是类和对象?

概念 说明
类(Class) 一种抽象模板,用于定义某种类型的数据和功能
对象(Object) 类的实例,是实际存在的数据个体

✅ 定义一个类:

python 复制代码
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print(f"大家好,我是 {self.name},今年 {self.age} 岁。")

✅ 创建对象:

python 复制代码
stu1 = Student("小明", 18)
stu1.say_hello()

输出:

python 复制代码
大家好,我是 小明,今年 18 岁。

📌 类的构造方法(init

init() 是类的特殊方法,在对象创建时自动调用,用于初始化属性。

python 复制代码
def __init__(self, 参数...):
    self.属性名 = 参数

🔁 对象的方法调用

对象调用方法格式:对象名.方法名()

方法中访问属性用 self.属性名。

python 复制代码
class Dog:
    def __init__(self, name):
        self.name = name

    def bark(self):
        print(f"{self.name}:汪汪!")

dog1 = Dog("小白")
dog1.bark()

✨ 补充:实例属性 vs 类属性(了解)

python 复制代码
class Demo:
    class_var = "我是类属性"  # 所有对象共享

    def __init__(self):
        self.instance_var = "我是实例属性"  # 每个对象独立

🧪 今日练习任务

✅ 练习1:定义一个 Book 类,包含书名、作者,和方法 info() 输出书籍信息

python 复制代码
class Book:
    def __init__(self, title, author):
        self.title = title
        self.author = author

    def info(self):
        print(f"《{self.title}》作者:{self.author}")

book1 = Book("三体", "刘慈欣")
book1.info()

✅ 练习2:实现一个 Rectangle 类,包含长、宽,和方法计算面积与周长

python 复制代码
class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

    def perimeter(self):
        return 2 * (self.width + self.height)

r = Rectangle(3, 4)
print("面积:", r.area())
print("周长:", r.perimeter())

✅ 练习3:定义一个 Person 类,增加一个方法 is_adult() 判断是否成年(年龄≥18)

python 复制代码
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def is_adult(self):
        return self.age >= 18

p = Person("小红", 17)
print(p.is_adult())  # 输出 False

📌 今日总结

内容 说明
类和对象 类是模板,对象是实例
构造方法 init 初始化属性
self 表示当前对象的引用
面向对象思维 抽象对象、封装属性、复用结构
相关推荐
Le1Yu20 小时前
消息队列以及RabbitMQ的使用
java·开发语言
羚羊角uou20 小时前
【Linux】线程池
java·开发语言
CappuccinoRose20 小时前
MATLAB学习文档(二十四)
学习·数学建模·matlab·数据可视化
菜鸟‍20 小时前
【前端学习】仿Deepseek官网AI聊天网站React
前端·学习·react.js
今天只学一颗糖20 小时前
Linux学习笔记--GPIO子系统和PinCtrl子系统
linux·笔记·学习
爬虫程序猿20 小时前
把 1688 商品详情搬进 MySQL:PHP 爬虫全链路实战(2025 版)
爬虫·python·音视频
Fcy64820 小时前
C++ vector容器的解析和使用
开发语言·c++·vector
lingggggaaaa21 小时前
小迪安全v2023学习笔记(一百三十四讲)—— Windows权限提升篇&数据库篇&MySQL&MSSQL&Oracle&自动化项目
java·数据库·windows·笔记·学习·安全·网络安全
无限进步_21 小时前
C语言文件操作全面解析:从基础概念到高级应用
c语言·开发语言·c++·后端·visual studio
_OP_CHEN21 小时前
C++基础:(十五)queue的深度解析和模拟实现
开发语言·c++·stl·bfs·queue·容器适配器·queue模拟实现