继承另一个对象的方法

2024-09-29 23:18:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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对象,然后该对象成为另一个对象(file对象)(并继承其所有方法)。 这样我就可以像使用文件对象一样使用BobFile对象了。。你知道吗

这可能吗?我尝试将新的文件对象分配给BobFile的SELF,但没有成功。。。你知道吗


Tags: 文件对象selftxtcloseinitdefopen
3条回答

你到底想达到什么目的?不能创建成为另一个对象的对象。你能创造一辆变成大象的汽车吗?这不合理。如果你的设计中出现了这样的东西,你应该考虑一个新的设计。你知道吗

所以后退一点,想想你想做什么。如果你只是想照你的问题说的做。然后简单地创建一个类变量,将其设置为init中的file对象。然后,在BobbyFile类中创建read()和close()方法,调用类中文件变量的相应方法。你知道吗

看了你的题目和描述后,你会有点困惑。这就是你想要达到的目标吗?你知道吗

class myfile(file):
    def __init__(self, *args, **kwargs):
        file.__init__(self,*args,**kwargs)

o = myfile('foo','w')
o.write('something')
o.close()

属性委托?你知道吗

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()

相关问题 更多 >

    热门问题