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

Python类实现单词阴阳性判断报错:'Gender'对象无'male'属性

问题解决:基于Gender类实现性别判断

错误原因分析

  1. 属性未定义:原代码中Gender类未声明male和female属性,直接访问gender.male会触发AttributeError。
  2. __eq__方法误用:Python中__eq__是重载==运算符的特殊方法,正确签名应为def __eq__(self, other),原代码参数定义不符合规范,无法实现比较逻辑。

修正后的代码

variable1 = "Pedro"

class Gender:
    class _GenderChecker:
        def __init__(self, rule):
            self.rule = rule
        
        def __eq__(self, word):
            if isinstance(word, str):
                return self.rule(word)
            return False
    
    # 修正规则:匹配示例输入的实际逻辑——以西语名字惯例,o结尾为阳性,a结尾为阴性
    male = _GenderChecker(lambda x: x.endswith('o'))
    female = _GenderChecker(lambda x: x.endswith('a'))

gender = Gender()

if variable1 == gender.male:
    print(f"{variable1} is male")
elif variable1 == gender.female:
    print(f"{variable1} is female")
else:
    print(f"{variable1} gender unknown")

代码说明

  1. 内部类封装判断逻辑:_GenderChecker内部类通过构造函数接收判断规则(lambda函数),重载__eq__方法实现字符串与性别规则的比较。
  2. 类属性暴露性别规则:Gender类的male和female属性是_GenderChecker实例,分别绑定对应判断规则,满足你要求的variable1 == gender.male调用形式。
  3. 适配示例输入:原需求中“开头”应为笔误,调整为“结尾”规则后才能正确匹配Pedro(o结尾)和Lola(a结尾)的示例输出。

测试结果

  • 输入"Pedro"时,输出Pedro is male
  • 输入"Lola"时,输出Lola is female

内容的提问来源于stack exchange,提问作者Evangelos Dellas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 06:10:07