Python类代码报错:无法使用字符串类,请求排查代码缺陷
问题排查与修复方案
你的代码核心问题是类的实例变量和方法重名:
- 你在Person类里同时定义了实例变量
name/sex,以及同名的name()/sex()方法 - 当构造函数
__init__给self.name赋值为输入的字符串后,这个字符串类型的实例变量会直接覆盖掉同名的方法 - 后续调用
p.name()时,实际上是在尝试调用一个字符串对象,这就触发了“无法使用字符串类”的错误
修正后的代码如下:
class Person: def __init__(self, name, sex): self.name = name self.sex = sex print("构造函数的调用") # 修改方法名,避免和实例变量冲突 def print_name(self): print(self.name) def print_sex(self): print(self.sex) a = input() b = input() p = Person(a, b) p.print_name() p.print_sex()
额外补充两个优化点:
- 类开头的
name=None和sex=None属于冗余代码,构造函数会直接给实例变量赋值,不需要提前声明 - 方法命名建议遵循Python小蛇形命名规范(比如
print_name),可读性更强
内容的提问来源于stack exchange,提问作者Langrange2021
相关产品推荐
相关产品推荐

