zsj007
蓝桥python学习系列

一、基础认知:什么是类与内置类型?
1.类(Class):自定义数据类型的 “模板”
定义:类是封装属性(数据)和方法(操作逻辑)的集合,用于创建特定类型的对象(实例)

核心作用:解决代码复用、逻辑封装问题,让程序更具模块化和扩展性

核心特殊方法:init(初始化方法)init 是类中最基础的 “初始化方法”,它在对象被创建后、返回给用户前会被自动调用,核心作用是给新实例设置初始的 “实例属性”:
第一个参数 self:代表正在初始化的实例对象本身(调用时无需手动传参,Python 会自动传入);
任务:为实例绑定属性,定义对象的初始状态
简单示例:

class Person:
    # 属性(类属性/实例属性)
    species = "人类"  # 类属性(所有实例共享)
    
    # 构造方法:初始化实例属性
    def __init__(self, name, age):
        self.name = name  # 实例属性(每个实例独立)
        self.age = age
    
    # 方法(实例方法)
    def say_hello(self):
        print(f"你好,我是{self.name},今年{self.age}岁")

2. 内置类型:Python 预定义的 “现成类”
定义:Python 自带的无需手动定义、可直接使用的数据类型,本质是 Python 解释器预实现的类。

常见内置类型分类:

基本类型:int(整数)、float(浮点数)、str(字符串)、bool(布尔值)、NoneType(空值);

容器类型:list(列表)、tuple(元组)、dict(字典)、set(集合)、frozenset(不可变集合);

其他常用:range(范围)、bytes(字节串)、bytearray(可变字节串)等

关键特性:每个内置类型都有专属的属性和方法(如 list.append()str.split()),与自定义类的 “属性 + 方法” 结构完全一致。

二.内置类型的核心用法

1. 基本类型:不可变类型的特性与操作

核心特点:创建后无法修改内部值(修改会生成新对象);

常用操作:

# int/float:数值运算
a = 10
print(a + 5)  # 15,支持 +-*/% 等
print(a.bit_length())  # 4(二进制位数)

# str:字符串处理
s = "python"
print(s.upper())  # PYTHON(大小写转换)
print(s[0:3])  # pyt(切片)
print(s.join(["I", "love"]))  # Ipythonlove(拼接)

2. 容器类型:可变 / 不可变的选择

(1)不可变容器:tuple(元组)、frozenset(不可变集合)
适用场景:存储不希望被修改的数据(如配置项、坐标);
示例:

t = (1, 2, "a")
print(t[1])  # 2(支持索引)
# t[0] = 3  # 报错:TypeError(不可修改)

fs = frozenset({1, 2, 3})
# fs.add(4)  # 报错:没有 add 方法(不可变)

(2)可变容器:list(列表)、dict(字典)、set(集合)
核心特点:可动态添加、删除、修改元素(修改不生成新对象);

常用操作:

# list:有序可变,支持重复元素
lst = [1, 2, 3]
lst.append(4)  # 添加元素 → [1,2,3,4]
lst.pop(0)     # 删除第一个元素 → [2,3,4]
lst.sort()     # 排序(原地修改)

# dict:无序键值对,键唯一且不可变
d = {"name": "李四", "age": 25}
d["gender"] = "男"  # 添加键值对
print(d.get("name"))  # 李四(安全获取值)
print(d.items())  # dict_items([('name', '李四'), ('age', 25), ('gender', '男')])

# set:无序去重,支持集合运算
s = {1, 2, 2, 3}
print(s)  # {1,2,3}(自动去重)
s.add(4)  # 添加元素
print(s & {2, 3, 5})  # {2,3}(交集运算)

三.避坑指南:类与内置类型的常见误区

1. 混淆 “不可变类型” 的修改逻辑

错误认知:s = "abc"; s[0] = "A" 能修改字符串;
正确逻辑:不可变类型(str、tuple、int)的 “修改” 本质是创建新对象,如 s = s.replace("a", "A")(生成新字符串赋值给 s)

2. 继承内置类型时忽略 super() 调用

错误示例:重写 init 时未调用父类方法,导致内置功能失效:

class BadList(list):
    def __init__(self):
        self.count = 0  # 未调用 super().__init__()
bl = BadList()
bl.append(1)  # 正常?看似可用,但复杂场景会报错(如继承 dict 时)

正确做法:始终在自定义 init 中调用 super().init(),确保父类初始化完成

四.总结:类与内置类型的核心逻辑

1.本质统一:内置类型是 Python 预定义的类,自定义类是开发者扩展的类,两者遵循相同的面向对象规则;
2.用法互补:内置类型满足通用需求(优先使用,性能更高),自定义类满足个性化需求(封装业务逻辑);
3.进阶技巧:继承内置类型可快速扩展功能,实现特殊方法可让自定义类更 “易用”(贴近内置类型体验)。
掌握以上知识点,既能灵活运用内置类型提高开发效率,也能通过自定义类构建模块化、可扩展的 Python 程序。

posted on 2025-12-15 22:35  予佳  阅读(2)  评论(0)    收藏  举报