Python类调用init_vibe_check报未定义错误该如何解决?
问题原因分析
init_vibe_check是PeaceKeeper类的实例方法,类内部调用实例方法必须通过self.方法名()的形式调用,不能直接写方法名,且调用时不需要手动传入self参数,你的调用写法init_vibe_check(self)不符合语法要求,直接触发未定义报错。Dev类的name、has_vibe属性是存储在PeaceKeeper实例的self.dev属性中的,你直接通过self.has_vibe、self.name访问会找不到属性,必须改为self.dev.has_vibe、self.dev.name。create_dress_code_for是实例方法,不能直接通过类名PeaceKeeper调用,必须先传入Dev实例创建PeaceKeeper的实例对象,再通过实例调用该方法。
修正后可运行代码
# # 15:03 : October 8, 2021 # By: Your friendly neighborhood SWE ==> ADMINIXTRATOR # AIM: Keep world peace by creating a dress code # class Dev: level = 'Pre-Senior' def __init__(self, name, has_vibe): self.name = name self.has_vibe = has_vibe class PeaceKeeper: def __init__(self, dev): super().__init__() self.dev = dev def init_vibe_check(self): if self.dev.has_vibe == True: return True else: return False def create_dress_code_for(self): he_will_receive_props = self.init_vibe_check() if he_will_receive_props == True: print("Hi " + self.dev.name + ", you are entitled to a dress code") else: print(self.dev.name + ", you cannot get a dress code") # Create two sample Devs david_chuka = Dev("David Chuka", True) haks = Dev("Haksoat", False) # 先实例化PeaceKeeper再调用方法 PeaceKeeper(david_chuka).create_dress_code_for() PeaceKeeper(haks).create_dress_code_for()
内容的提问来源于stack exchange,提问作者Adminixtrator
相关产品推荐
相关产品推荐

