草庐IT

namedtuples

全部标签

python - 在 namedtuple 中输入提示

考虑以下代码:fromcollectionsimportnamedtuplepoint=namedtuple("Point",("x:int","y:int"))上面的代码只是展示我想要实现的目标的一种方式。我想用类型提示制作namedtuple。你知道任何优雅的方式来达到预期的结果吗? 最佳答案 自3.6以来类型化命名元组的首选语法是fromtypingimportNamedTupleclassPoint(NamedTuple):x:inty:int=1#SetdefaultvaluePoint(3)#->Point(x=3,y=

python - 在 namedtuple 中输入提示

考虑以下代码:fromcollectionsimportnamedtuplepoint=namedtuple("Point",("x:int","y:int"))上面的代码只是展示我想要实现的目标的一种方式。我想用类型提示制作namedtuple。你知道任何优雅的方式来达到预期的结果吗? 最佳答案 自3.6以来类型化命名元组的首选语法是fromtypingimportNamedTupleclassPoint(NamedTuple):x:inty:int=1#SetdefaultvaluePoint(3)#->Point(x=3,y=

浅谈dataclass和namedtuple

之前有简单讲了下命名元组,现在联系数据类再做比较下目前发现,因为数据类和普通的类没什么差异,只是提供了简写__init__的语法糖,而且增加了类型注解,可以随意修改属性值而命名元组无法修改,除非返回一个新的实例1importdataclasses234@dataclasses.dataclass()5classValley:6name:str7age:int=168910v=Valley(name="g")11print(v)12#可重新赋值13v.age=2614print(v)也可以冻结字段禁止二次赋值 fromtypingimportNamedTupleclassValley_(Name

Python functools.namedtuple

我知道collections.namedtuple的存在和目的,但我注意到,至少在IDLE(3.2.2)中,这个工厂函数也在functools:>>>importfunctools>>>functools.namedtuple它也按预期存在于collections中,并且是相同的功能:>>>importcollections>>>collections.namedtupleisfunctools.namedtupleTrue我找不到任何文档提到namedtuple是集合以外的任何地方。那么:这是标准,还是只是一种IDLE怪癖?如果它只是IDLE,它是一个错误还是一个为什么namedtu

python - NamedTuple 声明并在一行中使用

我想存储一个维度namedtuple(x,y)。在我的整个程序中我只需要一次。我能做到:Dimension=namedtuple('Dimension',['x','y'])dim=Dimension(2,3)但是,因为我确定这是我在整个程序中唯一需要的Dimension,所以我想知道我是否可以将它变成一个单行代码,返回一个我可以返回其属性的对象像dim.x和dim.y一样访问? 最佳答案 不需要临时名称Dimension:dim=namedtuple('Dimension',['x','y'])(2,3)或者,您可以使用type的

python - 跨多个链式函数的 namedTuples 定义

我目前正在构建一个模块化的函数管道来处理Python(2.7)中的一些数据。我坚持一种松散的功能风格,没有任何对象(对于我正在应用的代码类型和例程来说,它非常有意义,到目前为止的代码是整洁和可读的,设计对象只会让一切成为有点混淆)。为了保持一致,我定义了一个自定义命名元组,其中包含字段名称等。这个想法是初始函数读取一些数据文件并返回这些专门定义的元组之一。以下函数将读取它,处理数据字段并返回一个包含更改的新元组(因为它们是不可变的)。但是,我似乎无法避免必须执行导入集合并重新定义自定义类型-请参阅代码示例。importcollectionsdefNewFunction(MyCustom

python - 混合抽象类和namedtuple

我想用defines和abstractmethod定义一个namedtuple和一个基类的混合:importabcimportcollectionsclassA(object):__metaclass__=abc.ABCMeta@abc.abstractmethoddefdo(self):print("UCan'tTouchThis")B=collections.namedtuple('B','x,y')classC(B,A):passc=C(x=3,y=4)print(c)c.do()据我了解阅读文档和otherexamplesIhaveseen,c.do()应该引发错误,因为类C没

python - 具有 namedtuple 的多处理对象 - pickle 错误

我在要放入多处理的对象中使用命名元组时遇到问题。我收到pickle错误。我尝试了其他stackoverflow帖子中的几件事,但我无法成功。这是我的代码结构:package_main,test_moduleimportmyprogram.package_of_classes.data_object_moduleimport....obj_calculateclasstest(object):if__name__=='__main__':my_obj=create_obj('myobject',['f1','f2'])input=multiprocessing.Queue()output

python - typing.NamedTuple 和 PyCharm

如何让typing.NamedTuple与PyCharm完美搭配?collections.namedtuple工作正常:importcollectionsB=collections.namedtuple('B',['i'])b=B(1)b.i但是typing.NamedTuple不会:importtypingA=typing.NamedTuple('A',[('i',int)])a=A(1)a.#Nosuggestions 最佳答案 您最好将此类问题转至PyCharmbugtracker.你的问题已经有一个开放的ticket虽然。

python - 什么是 namedtuples _replace 更好的替代品?

拿这段代码:>>>importurlparse>>>parts=urlparse.urlparse('http://docs.python.org/library/')>>>parts=parts._replace(path='/3.0'+parts.path)parts._replace有效但由于它是带下划线的方法,因此应该是内部方法,未使用。有其他选择吗?我不想做:>>>parts=parts[:2]+('/3.0'+parts.path,)+parts[3:]因为这使它成为一个普通的元组,而不是一个命名元组,并且做:>>>parts=namedtuple(scheme=parts