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

Python中Restaurant超类的IceCreamStand子类属性缺失错误如何解决?

问题分析

你遇到的AttributeError提示子类实例没有flavor属性,大概率是子类__init__方法中self.flavor的缩进错误,导致这行代码未被正确执行(比如缩进嵌套到super().__init__的调用逻辑内,或缩进层级不匹配)。从你贴出的代码来看语法逻辑是正确的,但实际运行的代码可能存在缩进问题。

修正后的代码
class Restaurant:
    def __init__(self, name, cuisine_type):
        """Initialize attributes to describe restaurant."""
        self.name = name
        self.cuisine_type = cuisine_type
        self.number_served = 23

    def describe_restaurant(self):
        print(f"The restaurant name is {self.name}.")
        print(f"This restaurant is a {self.cuisine_type} restaurant.")

    def open_restaurant(self):
        print(f"{self.name} is now open.")

    def set_number_served(self, new_number_served):
        self.number_served = new_number_served

    def increment_number_served(self, increment):
        self.number_served += increment

class IceCreamStand(Restaurant):
    def __init__(self, name, cuisine_type):
        # 正确调用父类初始化方法,继承父类属性
        super().__init__(name, cuisine_type)
        # 确保该行与super()处于同一缩进层级,成为实例属性
        self.flavor = "Vanilla"

    def display_flavors(self):
        print("The flavor they offer:")
        print(self.flavor)

# 实例化子类并调用方法
creamStand = IceCreamStand("Jace's Ice Cream", "Ice cream")
creamStand.describe_restaurant()
creamStand.display_flavors()
关键注意点
  • 缩进一致性:Python对缩进极度敏感,子类__init__中的self.flavor必须和super().__init__处于同一缩进层级,确保实例初始化时这行代码被执行,将flavor绑定为实例属性。
  • 父类初始化顺序:super().__init__(name, cuisine_type)必须先调用,完成父类属性的初始化后,再定义子类的自定义属性,避免实例化异常。

运行修正后的代码会输出预期结果:

The restaurant name is Jace's Ice Cream.
This restaurant is a Ice cream restaurant.
The flavor they offer:
Vanilla

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:45:52