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

Python子类如何获取父类已赋值的self属性,无需重复执行生成方法?

问题原因

问题出在B.get_name方法中的A().random_number()这一行:
A()会创建一个全新的A类实例,你调用这个新实例的random_number方法,修改的是这个新实例的number属性,和当前B类实例的self.number完全无关,所以打印当前实例的self.number自然是空的。

正确实现

因为B已经继承了A,所以直接调用当前实例继承自父类的random_number方法即可,不需要重新实例化A类,修改后的代码如下:

import random
class A:
    def __init__(self):
        self.number = []

    def random_number(self):
        for i in range(4):
            self.number.append(random.randint(1, 100))
            # 这行是原代码里的冗余调用,不需要可以直接删除
            random.randint(1, 100)

        print("from class A", self.number)

class B(A):
    def __init__(self):
        super().__init__()

    def get_name(self):
        # 直接调用当前实例继承的父类方法,修改的就是当前实例的self.number
        self.random_number()
        print("from class B", self.number)

B().get_name()

输出示例

from class A [23, 67, 19, 82]
from class B [23, 67, 19, 82]

该实现只调用了一次random_number方法,不会重复执行random.randint生成逻辑,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 22:06:03