属性和类变量

问题描述 投票:0回答:1

我真的很喜欢通过

attrs
库定义类的方式。 特别是如何劫持 Python 类变量的常用语法来定义实例变量。 但是有没有办法用
attrs
获取类变量呢?

如果我有以下代码

from typing import ClassVar, Final

from attrs import define


@define
class Person:
    name: Final[str]
    age: Final[int]
    goes_to_school: Final[bool]
    my_class_var: ClassVar[str]


p = Person('Bart Simpson', 10, True)

p.my_class_var

失败并显示

AttributeError: 'Person' object has no attribute 'my_class_var'
。 事实上,attrs API 参考

注释为typing.ClassVar的属性,以及既没有注释也没有设置为field()的属性将被忽略。

python class-variables python-attrs
1个回答
0
投票

您可以通过使用 mixin 类和此类变量来安装类变量,简单的例子

from attrs import define, field


class Mixin:
    my_var = 25


@define
class Person(Mixin):
    name = field()


p = Person('Jane')
print(p.my_var)

提供输出

25

(使用 attrs 23.1.0 和 Python 3.10.12 进行测试)

© www.soinside.com 2019 - 2024. All rights reserved.