{site_name}

{site_name}

🌜 搜索

Python中的冻结实例是指一种不可变对象,其属性和方法在创建后不能被修改或删除

Python 𝄐 0
python冻结集合,pytorch 冻结某层参数,python intended block,pythondone,pytorch冻结参数,pytorch冻结一部分参数
Python中的冻结实例是指一种不可变对象,其属性和方法在创建后不能被修改或删除。这与Python中的普通对象(也称为“可变对象”)不同,可以随意修改其属性和方法。

冻结实例是通过使用特殊的类来实现的,例如namedtuple 和 dataclass,它们会自动为您创建一个只读的实例,如下所示:

python
from collections import namedtuple

Person = namedtuple('Person', ['name', 'age'])
person = Person('Alice', 25)

print(person.name) # 输出 'Alice'
print(person.age) # 输出 25

person.age = 30 # TypeError: 'Person' object does not support item assignment


在上面的示例中,我们使用namedtuple来创建一个名为“Person”的类,并在创建实例时传递名称和年龄参数。一旦创建了Person实例,它们的属性就无法更改。当我们尝试更改person对象的年龄属性时,将引发TypeError异常。

另一个实现冻结实例的方式是使用dataclass,如下所示:

python
from dataclasses import dataclass

@dataclass(frozen=True)
class Point:
x: float
y: float

p = Point(1.0, 2.0)
print(p.x) # 输出 1.0
print(p.y) # 输出 2.0

p.x = 3.0 # AttributeError: can't set attribute


在上面的示例中,我们使用dataclass装饰器创建了一个名为“Point”的类,并指定frozen=True选项来创建一个冻结实例。一旦创建了Point实例,它们的属性就不能更改或删除。当我们尝试更改p对象的x属性时,将引发AttributeError异常。