f = open('bobby_g.txt', 'w')
f.write('Hey bobby!')
f.close()
class BobFile:
def __init__(self, x):
self = open(x, 'r')
a = BobFile('bobby_g.txt')
print a.read()
a.close()
我不想继承'file'对象,我想创建一个BobFile对象,然后成为另一个对象(文件对象)(并继承其所有方法)。 所以我可以使用BobFile对象就好像它是一个文件对象..
这可能吗?我尝试将新文件对象分配给BobFile的SELF,但这不起作用......
答案 0 :(得分:2)
属性委托?
class BobFile:
def __init__(self, x):
self.__file = open(x,'r')
def __getattr__(self, name):
return getattr(self.__file, name)
a = BobFile('/dev/random')
print a.read(20)
a.close()
答案 1 :(得分:1)
你到底想要达到什么目的?您无法创建成为另一个对象的对象。你能创造一辆成为大象的汽车吗?这不合理。如果你在设计中最终得到类似的东西,你应该想到一个新的设计。
回过头来思考一下你想做什么。如果你只是想做你的问题所说的话。然后,只需创建一个在 init 中设置为文件对象的类变量。然后,在BobbyFile类中创建read()和close()方法,这些方法在类中调用文件变量的相应方法。
答案 2 :(得分:1)
阅读完题名和你的描述后,有点混乱。这是你想要实现的目标吗?
class myfile(file):
def __init__(self, *args, **kwargs):
file.__init__(self,*args,**kwargs)
o = myfile('foo','w')
o.write('something')
o.close()