gpt4 book ai didi

python - python 3中的子类文件

转载 作者:太空狗 更新时间:2023-10-29 21:55:31 25 4
gpt4 key购买 nike

在 python 2 中,file 是一个合适的类,所以我写了

class MyFile(file):  
def floats_from_csv(self):
strs = self.read(1000000).split(',')
for i in strs:
yield float(i)

with MyFile("x.csv", "rt") as x:
for i in x.floats_from_csv():
...

在 python3 中,大量文件替换没有公共(public)构造函数,因此我无法子类化并获得 __init__ 函数。我有一个使用委托(delegate)的 hack,但它很难看。创建内置 IO 类的子类的批准方法是什么?

最佳答案

我要做的是用支持任何类文件对象的通用类型替换您的子类型(如果它有一个read方法,就足够了)并且只是像这样封装它。

class MyCsvHandler():
def __init__ (self, fileObj):
self.file = fileObj

def floatsFromCsv (self):
strs = self.file.read(1000000).split(',')
for i in strs:
yield float(i)

with open('x.csv', 'r') as f:
h = MyCsvHandler(f)
for i in h.floatsFromCsv():
# ...

这样,您始终可以用完全不同的东西替换您的文件对象,例如您从网站获得的 IO 对象,或来自其他地方的其他流。

关于python - python 3中的子类文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13114312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com