You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何让子类调用父类的signal_power属性?

解决Line类调用父类signal_power属性的问题

你的问题出在Line类的构造函数没有调用父类Digital_signal_information的构造函数,导致父类的signal_power、noise_power等属性从未被初始化,自然无法在子类方法中访问。

解决方案:在子类构造函数中调用父类构造函数

修改Line类的__init__方法,让它接收父类所需的参数,并通过super()调用父类的构造函数,完成父类属性的初始化。同时注意修正SNR_Digital方法中未定义的self.loss问题(假设损耗是损耗系数乘以长度,你可根据实际逻辑调整):

class Digital_signal_information:
    def __init__(self, signal_power: float, noise_power: float, n_bit_mod: int):
        self.signal_power = signal_power  # 要使用的属性
        self.noise_power = noise_power
        self.n_bit_mod = n_bit_mod


class Line(Digital_signal_information):
    # 新增父类所需的参数
    def __init__(self, loss_coefficient: float, length: int, signal_power: float, noise_power: float, n_bit_mod: int):
        # 调用父类构造函数,初始化signal_power等属性
        super().__init__(signal_power, noise_power, n_bit_mod)
        self.loss_coefficient = loss_coefficient
        self.length = length

    def Noise_Generation(self):
        noise_generation = 1e-9 * self.signal_power * self.length
        return noise_generation
    
    def SNR_Digital(self):
        # 计算线路损耗(根据你的逻辑调整)
        loss = self.loss_coefficient * self.length
        snr_digital = self.signal_power - self.noise_power - loss
        return snr_digital

原理说明

super().__init__(...)会触发父类的构造函数,将传入的signal_power等参数赋值给子类实例的对应属性,这样你就能在Noise_Generation和SNR_Digital方法中通过self.signal_power正常访问该属性了。

内容的提问来源于stack exchange,提问作者Severjan Lici

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 08:25:15