继承vlc.MediaPlayer未生成自定义类实例,调用方法报错
问题解答
没错,这个问题确实是因为vlc.MediaPlayer是基于_ctypes实现的绑定类导致的。这类由C扩展或_ctypes生成的Python类,大多不支持常规的Python类继承逻辑——当你实例化子类CustomMediaPlayer时,底层会直接返回原vlc.MediaPlayer的实例,完全绕过了你的子类定义,自然找不到自定义的custom_method方法。
解决这个问题最靠谱的方式是用**组合(包装器模式)**代替继承:
import vlc class CustomMediaPlayer: def __init__(self, *args, **kwargs): # 内部持有一个真正的vlc.MediaPlayer实例 self._player = vlc.MediaPlayer(*args, **kwargs) # 代理原MediaPlayer的核心方法,按需添加 def play(self): return self._player.play() def stop(self): return self._player.stop() def set_media(self, media): return self._player.set_media(media) # 你的自定义方法 def custom_method(self): print("执行自定义逻辑,比如播放前的预处理")
这种方式下,你可以通过内部的_player实例调用原类的所有方法,同时自由添加自己的自定义逻辑,完全避开继承_ctypes类的坑。
内容的提问来源于stack exchange,提问作者stack92
相关产品推荐
相关产品推荐

