如何在子类中访问父类变量?代码示例及问题解析
子类访问父类变量的正确方式
你这段代码里有两个问题,导致没法正常访问父类的name变量:
- 父类
Country的构造方法__init__需要传入name参数,但子类City调用super().__init__()时没传参,运行时会直接报错。 - 要在子类里访问父类的实例变量,得先确保父类的构造方法被正确初始化,把必要的参数传进去。
给你修正后的代码:
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
相关产品推荐
相关产品推荐

