Python_Magic_Method
发表于|更新于|Python
|浏览量:
Python Magic Method
__post_init__
__post_init__(self) 方法在数据类实例初始化后被调用,用于执行一些额外的初始化逻辑。
例如,可以在这里进行属性的验证、计算以及设置默认值等操作。这有助于将初始化逻辑封装在类中,使代码更加清晰和模块化。
__repr__
当直接打印类的实例化对象时,系统将会输出对象的自我描述信息,默认是输出其内存中的对象,如:<__main__.Person object at 0x0042A6A0>。
我们可以重写 __post_init__(self) 方法,从而自定义类的打印信息。
文章作者: xhj
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 xhj的博客!
相关推荐
2025-07-13
Python中functools库的@cache注解的原理与用法
Python functools 库中的 @cache 装饰器@cache 是 Python 3.9+ 中引入的一个装饰器,用于自动缓存函数的结果,基于函数的参数。它是 @lru_cache(maxsize=None) 的简化版本。 原理@cache 的核心原理是 记忆化(Memoization): 参数作为键:将函数的参数转换为哈希键 结果缓存:将函数返回值存储在与参数键对应的缓存中 命中返回:当相同参数再次出现时,直接返回缓存结果,避免重复计算 基本用法12345678910111213from functools import cache@cachedef fibonacci(n): if n < 2: return n return fibonacci(n-1) + fibonacci(n-2)# 首次计算会执行实际计算print(fibonacci(10)) # 55# 相同参数再次调用,直接返回缓存结果print(fibonacci(10)) # 55 (从缓存返回) 与 @lru_cache 的比较12345678910fr...
2024-10-05
5_file_io
File and IO文件和IO读写文本数据12with open("text.txt", "rt", encoding="utf-8") as f: pass 打印输出到文件中12with open("text.log", "wt") as f: print("Test log", file=f) 使用其它分隔符或打印终止符打印12345print('abcd', 1234, sep=',', end='\t')row = ('abcd', 1234, 'bcda', 3)print(','.join(str(x) for x in row))print(*row, sep=",") 读写字节数据12with open("text.bin", "rb") as f:...
2025-07-02
PyTorch非阻塞传输参数详解
torch.cuda.Event() 是PyTorch中用于精确测量GPU操作时间和实现细粒度同步的工具。 基本用法创建CUDA Event12345import torch# 创建CUDA事件start_event = torch.cuda.Event(enable_timing=True) # 启用计时功能end_event = torch.cuda.Event(enable_timing=True) record() 方法record() 方法在GPU的当前流中插入一个事件记录点。 基本record用法12345678# 在GPU流中记录事件start_event.record() # 记录开始时间点# 执行一些GPU操作x = torch.randn(1000, 1000, device='cuda')y = x * x + 2 * x + 1end_event.record() # 记录结束时间点 synchronize() 方法synchronize() 方法阻塞CPU执行,直到事件完成。 基本synchronize用法123456# 等...
2025-07-06
Python_Metaclass
Python Metaclass参考资料 What are metaclasses in Python?
2024-10-08
8_class_object
Class and Object类和对象改变对象的字符串显示改变一个实例的字符串表示可以通过重定义它的 __str()__ 和 __repr()__ 方法。 12345678910class Pair: def __init__(self, x, y): self.x = x self.y = y def __repr__(self): return '({0.x!r}, {0.y!r})'.format(self) def __str__(self): return 'Pair({0.x!s}, {0.y!s})'.format(self) __str()__ 体现:print() 函数 __repr()__ 体现:交互式解释器内容 自定义字符串的格式化123456789101112131415161718192021_formats = { 'ymd...
2021-07-22
复盘|「天池 X LeetCode」在线编程专场选拔赛
复盘|「天池 X LeetCode」在线编程专场选拔赛统计链表奇数节点【一次遍历】遍历即可,小技巧是ans直接加0/1结果,省去if判断这一步。 1 2 3 4 5 6 7 class Solution: def numberEvenListNode(self, head: Optional[ListNode]) -> int: ans = 0 while head: ans += head.val & 1 head = head.next return ans 光线反射【模拟】用DIRS数组存↑↓←→(对应0123四种状态)。由题意,碰到向左倾斜的镜面,←↑是一对,↓→是一对,可以通过异或操作来转换两种状态(状态 xor 2 即可,总共0123四种方向,0 xor 2=2,2 xor 2 = 0,1 xor 2 = 3,3 xor 2 = 1);碰到向右倾斜的镜面,↓←是一对,↑→是一对,同理...