首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python basic on classes

Python basic on classes
EN

Stack Overflow用户
提问于 2011-11-17 06:17:40
回答 3查看 144关注 0票数 1

我定义了一个处理文件的类,但在尝试实例化该类并传递文件名时得到以下错误。让我知道问题出在哪里?

代码语言:javascript
复制
>>> class fileprocess:
...    def pread(self,filename):
...        print filename
...        f = open(filename,'w')
...        print f
>>> x = fileprocess
>>> x.pread('c:/test.txt')
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unbound method pread() must be called with
fileprocess instance as first argument (got nothing instead)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-17 06:20:32

x = fileprocess并不意味着xfileprocess的一个实例。这意味着x现在是fileprocess类的别名。

您需要使用()创建一个实例。

代码语言:javascript
复制
x = fileprocess()
x.pread('c:/test.txt')

此外,根据您的原始代码,您可以使用x创建类实例。

代码语言:javascript
复制
x = fileprocess
f = x() # creates a fileprocess
f.pread('c:/test.txt')
票数 7
EN

Stack Overflow用户

发布于 2011-11-17 06:19:34

x = fileprocess应为x = fileprocess()

当前x引用的是类本身,而不是类的实例。因此,当您调用x.pread('c:/test.txt')时,这与调用fileprocess.pread('c:/test.txt')是相同的

票数 3
EN

Stack Overflow用户

发布于 2011-11-17 09:19:33

但是为什么要使用写模式来读函数呢?也许是pwrite?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8159525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档