Day 31 类的定义和方法

一、知识点

1. 类的定义

在 Python 中,用class关键字定义类,格式为:

复制代码
class 类名:
    # 类的属性、方法

例如:class Circle: passpass是占位语句,暂不实现类内容)。

2. pass 占位语句

当类 / 方法暂时不需要写具体逻辑时,用pass占位,避免语法错误。示例:

复制代码
class EmptyClass:
    pass  # 暂时空实现

3. 类的初始化方法(init

  • 是类的 "构造方法",创建实例时自动调用,用于初始化实例属性。

  • 第一个参数必须是self(代表实例本身)。示例:

    class Person:
    def init(self, name):
    self.name = name # 给实例绑定name属性

    p = Person("小明") # 创建实例时,__init__自动执行
    print(p.name) # 输出:小明

4. 类的普通方法

  • 在类中定义的函数,需通过实例手动调用,用于实现类的功能。

  • 第一个参数也必须是self。示例:

    class Person:
    def init(self, name):
    self.name = name
    def say_hello(self): # 普通方法
    print(f"你好,我是{self.name}")

    p = Person("小红")
    p.say_hello() # 手动调用,输出:你好,我是小红

5. __init__与普通方法的核心区别

  • 调用时机:__init__是 "创建实例自动调",普通方法是 "手动调"。
  • 用途:__init__负责 "初始化属性",普通方法负责 "实现行为逻辑"。
  • 返回值:__init__必须返回None,普通方法可返回任意值。

二、作业

题目 1:定义圆(Circle)类

要求

  1. 包含属性:半径 radius
  2. 包含方法:
    • calculate_area():计算圆的面积(公式:πr2)。
    • calculate_circumference():计算圆的周长(公式:2πr)。
  3. 初始化时需传入半径,默认值为 1。

示例运行代码

复制代码
# 示例运行
circle = Circle(5)
print(f"半径: {circle.radius}")  # 输出: 半径: 5
print(f"面积: {circle.calculate_area()}")  # 输出: 面积: 78.54(保留两位小数)
print(f"周长: {circle.calculate_circumference()}")  # 输出: 周长: 31.42(保留两位小数)
python 复制代码
import math 
class Circle:
    def __init__(self, radius=1):
        self.radius = radius
    def calculate_area(self):
        area = math.pi * (self.radius ** 2)
        return round(area, 2)
    def calculate_circumference(self):
        circumference = 2 * math.pi * self.radius
        return round(circumference, 2)
    
circle = Circle(5)  
print(f"半径: {circle.radius}")  
print(f"面积: {circle.calculate_area()}")  
print(f"周长: {circle.calculate_circumference()}")  
html 复制代码
半径: 5
面积: 78.54
周长: 31.42

题目 2:定义长方形(Rectangle)类

要求

  1. 包含属性:长 length、宽 width
  2. 包含方法:
    • calculate_area():计算面积(公式:长 × 宽)。
    • calculate_perimeter():计算周长(公式:长宽)。
    • is_square():判断是否为正方形(长 == 宽)。
  3. 初始化时需传入长和宽,默认值均为 1。

示例运行代码

复制代码
rect = Rectangle(4, 6)
print(f"长: {rect.length}, 宽: {rect.width}")  # 输出: 长: 4, 宽: 6
print(f"面积: {rect.calculate_area()}")  # 输出: 面积: 24
print(f"周长: {rect.calculate_perimeter()}")  # 输出: 周长: 20
print(f"是否为正方形: {rect.is_square()}")  # 输出: 是否为正方形: False

square = Rectangle(5, 5)
print(f"是否为正方形: {square.is_square()}")  # 输出: 是否为正方形: True
python 复制代码
class Rectangle:
    def __init__(self, length=1, width=1):
        self.length = length
        self.width = width

    def calculate_area(self):
        area = self.length * self.width
        return area

    def calculate_perimeter(self):
        perimeter = 2 * (self.length + self.width)
        return perimeter
    
    def is_square(self):
        return  self.length == self.width


rect = Rectangle(4, 6)
print(f"长: {rect.length}, 宽: {rect.width}")  # 输出: 长: 4, 宽: 6
print(f"面积: {rect.calculate_area()}")  # 输出: 面积: 24
print(f"周长: {rect.calculate_perimeter()}")  # 输出: 周长: 20
print(f"是否为正方形: {rect.is_square()}")  # 输出: 是否为正方形: False

square = Rectangle(5, 5)
print(f"是否为正方形: {square.is_square()}")
html 复制代码
长: 4, 宽: 6
面积: 24
周长: 20
是否为正方形: False
是否为正方形: True

题目 3:图形工厂

要求 :创建工厂函数 create_shape(shape_type, *args),根据类型创建不同图形对象:

  • shape_type="circle":创建圆(参数:半径)。
  • shape_type="rectangle":创建长方形(参数:长、宽)。

示例运行代码

复制代码
shape1 = create_shape("circle", 5)
print(shape1.calculate_circumference())  # 输出: 31.42
shape2 = create_shape("rectangle", 3, 4)
print(shape2.is_square())  # 输出: False
python 复制代码
def create_shape(shape_type, *args):
    if shape_type == "circle":
        return Circle(*args)  
    elif shape_type == "rectangle":
        return Rectangle(*args)  
    else:
        raise ValueError("不支持的图形类型")



shape1 = create_shape("circle", 5)
print(shape1.calculate_circumference())  # 输出: 31.42
shape2 = create_shape("rectangle", 3, 4)
print(shape2.is_square())  # 输出: False
html 复制代码
31.42
False

勇闯python的第31天@浙大疏锦行

相关推荐
工业设备方案笔记8 分钟前
RK3588 AI部署实战:如何在ARM设备上运行AI模型?——从模型转换到边缘推理全过程解析
arm开发·人工智能·边缘计算
是上好佳佳佳呀9 分钟前
【机器学习|DAY06】集成学习(Ensemble Learning)笔记
笔记·机器学习·集成学习
AI产品库10 分钟前
控制电脑,接管你的浏览器,PC端Agent工具解析
人工智能·电脑
一个水瓶座程序猿.11 分钟前
基于Spring AI RAG 的AI知识库前端交互实现
前端·人工智能·spring
BaoshengTT13 分钟前
2026年双流区汽车贴膜种类及挑选要点保圣威固7V不凡门店
python
硅基流动14 分钟前
宇信科技与硅基流动达成战略合作,加速金融智能化升级
人工智能·科技·金融
乐启国际旅行社有限公司18 分钟前
Java线程池实战:文旅系统批量任务性能优化(团期生成/数据导出)
java·开发语言·性能优化
莉莉周的成长实验室24 分钟前
2026年七夕海报用什么AI工具可以做?品牌运营实测3个高频场景
大数据·人工智能
工业机器视觉设计和实现25 分钟前
cifar10训练突破80分(三,摸到pytorch尾灯!)
人工智能·pytorch·cudnn微积分
chatexcel25 分钟前
ChatExcel AI Word 升级:多模态读资料、按模板生成、智能排版配图,还能批注修订和联动Excel 复核
人工智能·ai·word·excel·ai写作