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

如何在子类中访问父类变量?代码示例及问题解析

子类访问父类变量的正确方式

你这段代码里有两个问题,导致没法正常访问父类的name变量:

  1. 父类Country的构造方法__init__需要传入name参数,但子类City调用super().__init__()时没传参,运行时会直接报错。
  2. 要在子类里访问父类的实例变量,得先确保父类的构造方法被正确初始化,把必要的参数传进去。

给你修正后的代码:

class Country:
    def __init__(self, name):
        self.name = name

class City(Country):
    def __init__(self, city, country_name):
        # 调用父类构造方法,传入country_name来初始化父类的name变量
        super().__init__(country_name)
        self.city = city
        
    def city_info(self):
        # 直接用self.name就能访问父类的实例变量
        print('{}_{}'.format(self.name, self.city))

# 测试一下
my_city = City("Seoul", "South Korea")
my_city.city_info()  # 会输出: South Korea_Seoul

另外再给你几种访问父类变量的常见方式:

  • 直接用self访问:只要父类构造方法初始化正确,子类实例直接用self.父类变量名就能访问,这是最常用的方式。
  • 用super()明确访问父类变量:如果子类和父类有同名变量,想专门访问父类的那个,可以用super().变量名,比如:
    def city_info(self):
        print('{}_{}'.format(super().name, self.city))
    
  • 访问父类的类变量:如果父类的变量是类变量(不是实例变量),可以直接用父类名.类变量名访问,比如:
    class Country:
        continent = "Asia"  # 这是类变量
        def __init__(self, name):
            self.name = name
    
    class City(Country):
        def show_continent(self):
            print(Country.continent)  # 直接访问父类的类变量
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:45:34