有没有办法在Python中方便地定义类似C的结构?我厌倦了写这样的东西:
class MyStruct():
def __init__(self, field1, field2, field3):
self.field1 = field1
self.field2 = field2
self.field3 = field3
最佳答案
更新:数据类
随着Data Classes的介绍在Python 3.7中我们已经非常接近了。
以下示例与下面的 NamedTuple 示例类似,但生成的对象是可变的,并且允许使用默认值。
from dataclasses import dataclass
@dataclass
class Point:
x: float
y: float
z: float = 0.0
p = Point(1.5, 2.5)
print(p) # Point(x=1.5, y=2.5, z=0.0)
这与新的 typing 配合得很好。模块,以防您想使用更具体的类型注释。
我一直在焦急地等待着这个!如果你问我,数据类和新的NamedTuple声明,与打字模块相结合就是天赐之物!
改进的 NamedTuple 声明
自从Python 3.6以来,它变得非常简单和美丽(恕我直言),只要你能忍受不变性。
一个new way of declaring NamedTuples被引入,它允许 type annotations还有:
from typing import NamedTuple
class User(NamedTuple):
name: str
class MyStruct(NamedTuple):
foo: str
bar: int
baz: list
qux: User
my_item = MyStruct('foo', 0, ['baz'], User('peter'))
print(my_item) # MyStruct(foo='foo', bar=0, baz=['baz'], qux=User(name='peter'))
关于python - Python 中类似 C 的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60373205/