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-03
Python_Decorator
Python Decorator基本原理…… 内置装饰器@property@property:把一个方法变成属性调用。 示例一: 把一个 getter 方法变成属性,只需要加上 @property 就可以了,此时,@property 本身又创建了另一个装饰器 @score.setter,负责把一个 setter 方法变成属性赋值。 123456789101112class Student(object): @property def score(self): return self._score @score.setter def score(self, value): if not isinstance(value, int): raise ValueError('score must be an integer!') if value < 0 or value > 100: raise ValueError('score mu...
2025-07-04
Python_Entry_Points
Python Entry Points基本原理setup.py: entry_points={key: value} key -> Plugin group value -> [“Plugin name = Plugin value“, …] Plugin value -> python_module:function_name 示例(vLLM)123456789101112131415161718# inside `setup.py` filefrom setuptools import setupsetup(name='vllm_add_dummy_model', version='0.1', packages=['vllm_add_dummy_model'], entry_points={ 'vllm.general_plugins': ["register_dummy...
2025-07-15
Python中time.perf_counter()方法详解
Python time.perf_counter() 方法详解原理time.perf_counter() 是 Python time 模块中的一个高精度计时函数,它的主要特点是: 高精度:提供最高可用精度的计时,通常可以达到纳秒级别 单调递增:保证计时值始终递增,不会受系统时间调整的影响 系统无关:在不同操作系统上提供一致的计时行为 包含睡眠时间:计算的是墙上时钟时间,包括进程睡眠的时间 基本用法1234567891011121314import time# 开始计时start = time.perf_counter()# 执行一些操作time.sleep(1.5) # 模拟耗时操作# 结束计时end = time.perf_counter()# 计算耗时elapsed = end - startprint(f"操作耗时: {elapsed:.6f} 秒") 实际应用示例1. 性能测试123456789101112131415161718192021import timedef expensive_operation(): &...
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:...
2024-10-01
1_pythonic
用 Pythonic 方式来思考1. 确认自己使用的 Python 版本没啥好讲的,主要 Python 2 跟 Python 3 有一部分语法的区别。 2. 遵循 PEP8 风格指南 使用空格来表示缩进,而不要使用 tab 12def foo(): pass 和语法有关的每一层缩进都用 4 个空格表示 12def foo(): print("4 spaces") 每行的字符数不该超过 79 个 对于占据多行的长表达式来说,除了首行之外的其余各行都应该在通常的缩进级别上再加上四个空格 1234def foo(): print(1111111111111111111111111111, 1111111111, "前面有 8 个空格", 222222 ) 文件中的函数和类之间应该用两个空行隔开 在同一个类中,各个方法之间应该用一个空行隔开 123456789101112class Cls(): def __init__(): pass def foo(): ...
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# 等...