python面向对象-类装饰器篇
Python类装饰器:给你的类穿上“皇帝的新装”引言:当类也需要“美颜”朋友们,今天我们来聊聊Python里的类装饰器。如果你觉得装饰器只能装饰函数,那你可就大错特错了!类也需要打扮得漂漂亮亮的好吗?想象一下,你的类穿着朴素的衣服去参加Python界的时尚派对,多尴尬啊! 类装饰器就像是类的私人造型师,可以在不改变类本身的情况下,给它添加新功能、新属性,或者干脆把它改头换面。让我们来看看这位“造型师”到底有什么魔法吧! 一、基础知识回顾:函数装饰器速成班在进入正题之前,让我们花30秒回顾一下函数装饰器: def 化妆师(func): def 化妆后(): print("先打粉底") func() print("再涂口红") return 化妆后@化妆师def 我(): print("我是素颜的我")我()# 输出:# 先打粉底# 我是素颜的我#...
python面向对象-描述符篇
🎩 Python 的 Property:从“绅士淑女”到“幕后导演”的优雅变身术引言:当属性开始“装腔作势”在 Python 的世界里,类属性本可以直接暴露,像穿着睡衣在家一样随意: class Dog: def __init__(self): self.age = 2 # 直接公开,毫无隐私!dog = Dog()dog.age = -5 # 哎呀,狗狗的年龄怎么能是负数? 这就像把银行密码写在额头上一样危险!于是我们发明了 getter 和 setter: class Dog: def __init__(self): self._age = 2 def get_age(self): return self._age def set_age(self, value): if value < 0: raise ValueError("年龄不能为负!") self._age = valuedog =...
python面向对象-魔法方法篇
Python魔法方法:解锁对象的超能力 想让你创建的对象像Python内置对象一样优雅、智能吗?那就必须掌握这些神奇的双下划线方法! 引言:为什么需要魔法方法?想象一下,你创建了一个对象,它不能进行加法运算(obj1 + obj2),不能像字典一样使用索引(obj[key]),甚至打印出来都是一堆看不懂的内存地址…多么无趣的对象啊! 幸运的是,Python为我们提供了一套“魔法方法”——那些以双下划线开头和结尾的特殊方法。它们就像是你对象的“超能力”,让普通对象瞬间变身超级对象! 第一章:生死轮回——对象的创建与销毁每个对象都有它的生命周期,从诞生到消亡,都有魔法方法相伴。 __new__:对象的“产房”class UpperStr(str): """创建一个总是大写的字符串类""" def __new__(cls, string): # 在对象创建之前,将字符串转换为大写 string = string.upper() # 调用父类的__new__来实际创建对象...
python面向对象-鸭子和魔法
🐍 Python面向对象奇技淫巧:从鸭子类型到魔法方法的奇幻之旅 Python的面向对象编程就像一场魔法秀——看似简单,实则暗藏玄机。今天,就让我们一起揭开这些魔法背后的秘密! 🦆 多态与鸭子类型:Python的“形式主义”多态:一个接口,多种实现想象一下,你是个健身教练,你的口号是:“不管你是瑜伽爱好者、举重选手还是跑步达人,只要你能运动(),就是我的学员!” Python中的多态正是如此: # 多种类型,同一个接口print(len("Hello")) # 字符串:5print(len([1, 2, 3])) # 列表:3print(len({"a": 1})) # 字典:1# 自定义类也能享受len()的待遇class Playlist: def __init__(self, songs): self.songs = songs def __len__(self): return len(self.songs) #...
python面向对象-oop基础
🐍 Python面向对象:从“类”到“超”能力 想要让代码像乐高一样灵活组装?面向对象编程(OOP)就是你的魔法工具箱! 一、类与对象:万物皆可“类”化什么是类?想象一下月饼模具——模具就是“类”,用它压出来的月饼就是“对象”。同一个模具可以做出无数个月饼,每个都是独立的个体! class 月饼模具: # 类属性:所有月饼共享的特征 默认口味 = "莲蓉" 默认重量 = 100 # 克 def 查看月饼(self): print(f"我是一个{self.口味}月饼,重{self.重量}克") print(f"self其实就是我自己:{self}")# 使用模具制作月饼月饼1 = 月饼模具()月饼1.口味 = "豆沙" # 实例属性print(月饼1.默认口味) # 输出:莲蓉月饼2 = 月饼模具()月饼2.重量 = 150月饼2.添加物 = "蛋黄" ...
python异常-异常篇
🐍 Python异常处理:从“崩溃”到优雅的艺术引言:为什么你的代码会“发脾气”?想象一下:你正在和一个Python程序愉快地对话,突然它“砰”地一声崩溃了,留下一堆红色的错误信息。这不是它在闹情绪,而是在用异常的方式告诉你:“嘿,这里有问题!”今天,我们就来学习如何与这些“小脾气”和谐相处。 第一章:认识Python的“异常家族”Python内置了一个庞大的异常家族,每个成员都有独特的“性格”。认识它们是处理异常的第一步。 常见的异常类型(从常见到不常见)# 让我们通过实例来认识它们def meet_the_exceptions(): # 1. ZeroDivisionError - 数学老师的噩梦 # 1 / 0 # 取消注释会触发 # 2. TypeError - 类型不匹配的尴尬 # "2" + 2 # 字符串和数字不能直接相加 # 3. ValueError - 值不对,但类型对 # int("我不是数字") # 4. IndexError -...
python永久存储-存储篇
Python永久存储大法:让数据不再“人间蒸发”引言:数据也需要一个“家”朋友们,有没有遇到过这样的尴尬情况?你精心训练的模型、辛苦收集的数据,一关程序就“人间蒸发”了?别担心,今天我们就来聊聊Python的永久存储技术,让你的数据有个安稳的“家”,随时等你回家吃饭! 一、文件操作:Python的“保险柜”1.1 open()函数:打开存储世界的大门# 最基础的文件打开方式file = open("my_data.txt", "r") # 就像打开保险柜的门content = file.read() # 取出里面的宝贝file.close() # 记得锁门! 1.2...
python函数-特性篇
Python函数进阶指南:从闭包到生成器的奇妙之旅引言:Python函数不只是”代码块”如果你认为Python函数只是简单的”def”加一段代码,那就像认为披萨只是”面饼加番茄酱”一样——没错,但错过了所有美味的部分!今天,我们就来探索Python函数那些让人兴奋的高级特性,让你的代码从”能运行”变成”优雅的艺术品”。 1. 闭包:函数的”记忆魔法”1.1 什么是闭包?闭包就像一个记得回家路的鸽子,即使飞出去了,也能找到回家的路——确切地说,是找到它诞生时的环境。 闭包的三个条件: 🏠 函数嵌套:一个函数里面定义了另一个函数 🧠 内部函数引用了外部函数的变量 🚀 内部函数作为外部函数的返回值 def outer_function(message): # 外部函数的变量 outer_variable = "外部的秘密:" def inner_function(): # 内部函数引用了外部函数的变量 return...
python函数-函数篇
Python函数:让你的代码学会“社交”的终极指南 函数就像代码世界里的社交达人,它们知道何时该说话(接受参数),何时该倾听(返回结果),以及如何在不同场合(作用域)表现得体。 一、函数的“社交技巧”:参数传递的艺术1.1 位置参数:先来后到的规矩def introduce(name, age, city): """最基本的参数传递方式,像排队一样讲究顺序""" return f"我叫{name},今年{age}岁,来自{city}"# 正确示范:按顺序传递参数print(introduce("小明", 25, "北京")) # "我叫小明,今年25岁,来自北京"# 尴尬场面:顺序错了print(introduce("北京", "小明", 25)) # "我叫北京,今年小明岁,来自25"...
python集合-集合篇
Python集合:让数据去“单身派对”,告别重复!引言:为什么需要集合?想象一下你正在整理你的音乐库,里面有几千首歌,但很多是重复的。你手动删除重复项得花多少时间?这时候Python集合(Set)就像一位高效的管家,眨眼间就能帮你搞定! 集合是Python中一个既强大又常被低估的数据结构。今天,就让我们一起探索这个神奇的工具,看看它如何让我们的代码更优雅、更高效! 什么是集合?简单来说,集合是一个无序的、不重复的元素集。你可以把它想象成一个没有重复值的数学集合,或者一个只允许唯一会员的俱乐部。 # 创建一个集合fruits = {"apple", "banana", "orange", "apple"} # 注意:有两个"apple"print(fruits) # 输出:{'banana', 'orange', 'apple'} -...
