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
相关产品推荐
相关产品推荐

