我做了這個類:如何強制上課?
class AudioSegmentCustom(AudioSegment):
def fade_override(self, seg, fade_len=100):
seg1, seg2 = AudioSegment._sync(self, seg)
final = seg1[:-fade_len]
a_fin = seg1[-fade_len:].fade(to_gain=-120, start=0, end=float('inf'))
a_fin *= seg2[:fade_len]
return (final + a_fin) + seg2[fade_len:]
我面臨的問題是,當我創建一些AudioSegmentCustom
變量,如果我「添加」。其中,add
操作返回原來的父類型= AudioSegment
因此,下面的代碼無法正常工作:
final = AudioSegmentCustom.from_mp3(mp3_src) + AudioSegment.from_mp3(mp3_other)
final = final.fade_override(...blabla...)
,因爲我得到:
'AudioSegment' object has no attribute 'fade_override'
...即使我已經開始使用AudioSegmentCustom
對象,但我只以AudioSegment
「only」對象結束。 「強制」新創建的對象的類型的方式是什麼?
以防萬一你需要它:
class AudioSegment(object):
def __add__(self, arg):
if isinstance(arg, AudioSegment):
return self.append(arg, crossfade=0)
else:
return self.apply_gain(arg)
您應該包含'AudioSegment .__ add__'的代碼。 –
它只是返回一個AudioSegment對象。你爲什麼需要它?無論如何,只是更新了我的問題 –
因爲一種方法是調整它,以便它創建與「self」相同的類的實例。如果您不想改變它,那麼您肯定需要編寫一個單獨的'AudioSegmentCustom .__ add__'方法或在其他地方構造'AudioSegmentCustom'。 –