Python OOP代码无法打印类对象名称?求排查与解决方法
你的Python OOP代码问题分析与修复方案
咱们来一步步拆解你代码里的问题,然后把它改对:
存在的核心问题
__init__没保存实例属性:你在初始化方法里接收了name参数,但没把它存到实例里(也就是没写self.name = name),导致你的bob实例根本没有存储"bob"这个名字,后续自然没法访问它。- 方法名和属性名冲突:你定义了一个叫
name的方法,这会和你本来想设置的实例属性重名。而且方法里写bob.name也不对——此时bob.name是这个方法本身,不是属性,方法内部应该用self来引用当前实例的内容。 - 从未调用打印名称的方法:你创建了
bob实例,但从来没触发过那个name方法,就算方法写对了也不会执行打印操作。
修正后的代码示例
这里给你两种常见的实现方式,按需选择:
方式1:通过方法打印名称
class Human: # 类名建议用大驼峰,符合Python的PEP8规范 def __init__(self, name): self.name = name # 把传入的名字存为实例属性 print("this is a human") def print_name(self): # 改名避免和属性冲突 print(f"this is {self.name}") # 用self访问当前实例的属性 bob = Human("bob") bob.print_name() # 调用方法打印名字
方式2:直接打印实例时显示名称(更常用)
如果希望直接print(bob)就能看到名字,可以实现__str__魔法方法:
class Human: def __init__(self, name): self.name = name print("this is a human") def __str__(self): return f"this is {self.name}" bob = Human("bob") print(bob) # 直接打印实例就会输出名字
内容的提问来源于stack exchange,提问作者Heech.p
相关产品推荐
相关产品推荐

