Python新手OOP项目类函数调用报错求助
帮你搞定Python OOP的这个小问题~
嘿,作为刚接触面向对象编程的新手,你的思路是对的,但代码里有几个小细节没处理好,导致调用出错,我来帮你梳理并修正:
先说说你原代码的核心问题:
- 你的
__init__方法里没必要提前传入FullName参数,因为全名是名字+姓氏的组合,完全可以动态生成,不需要一开始就作为初始化参数。 - 你提到的三个“函数”,在面向对象编程里应该是类的方法,需要定义在类内部,并且每个方法的第一个参数必须是
self(用来访问类的实例属性)。 - 大概率你调用的时候,要么没正确实例化类,要么试图直接调用未绑定到实例的方法,导致报错。
修正后的完整代码
下面是调整后的版本,完全符合你的需求,而且逻辑更清晰:
class UserFullName: def __init__(self): # 初始化时先把名字和姓氏置空,后续通过方法获取用户输入 self.first_name = "" self.last_name = "" def input_first_name(self): # 第一个方法:获取用户输入的名字 self.first_name = input("请输入你的名字:") def input_last_name(self): # 第二个方法:获取用户输入的姓氏 self.last_name = input("请输入你的姓氏:") def print_full_name(self): # 第三个方法:拼接并打印全名 full_name = f"{self.first_name} {self.last_name}" print(f"你的全名是:{full_name}")
怎么正确调用这个类?
只需要实例化类,然后依次调用方法就行:
# 创建类的实例 user = UserFullName() # 调用方法获取名字 user.input_first_name() # 调用方法获取姓氏 user.input_last_name() # 调用方法打印全名 user.print_full_name()
额外小提示(新手友好)
- 类的属性名建议用小写加下划线的格式(比如
first_name),这是Python的PEP8编码规范,可读性更强。 - 如果想更简洁,也可以把获取名字和姓氏的方法合并,但分开写更适合新手理解OOP的逻辑。
内容的提问来源于stack exchange,提问作者Sayed Gouda
相关产品推荐
相关产品推荐

