我有一个调用 class TiffFile(file)
. Python3叫它什么?
我尝试在python2中替换以下内容:
class TiffFile(file):
def __init__(self, path):
file.__init__(self, path, 'r+b')
通过python3中的以下内容:
class TiffFile(RawIOBase):
def __init__(self, path):
super(TiffFile, self).__init__(path, 'r+b')
但现在我越来越紧张了 TypeError: object.__init__() takes no parameters
1条答案
按热度按时间p5fdfcr11#
RawIOBase.__init__
不接受任何参数,这就是错误所在。你的
TiffFile
实现也继承了file
它不是一个类,而是一个构造函数,所以你的Python2实现是非惯用的,甚至有人会说它是错误的。你应该使用open
而不是file
,并且在类上下文中,应该使用io
用于输入和输出的模块类。你可以用
open
返回要使用的文件对象file
在Python2.7中,也可以使用io.FileIO
在Python2和Python3中都可以访问文件流,就像您使用open
.因此,您的实现更像:
这应该适用于所有当前支持的python版本,并允许您使用与旧实现相同的接口,同时更加正确和可移植。
你真的在用吗
r+b
用于在windows上以读写二进制模式打开文件?你可能应该使用rb
模式,如果您没有写入文件,而只是读取tiff数据。rb
将以二进制模式打开该文件以进行只读。附加的+
将文件设置为以读写模式打开。