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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:44:26