问答详情
源自:4-2 Python类的__str__ 和 __repr__方法

为什么会get不到name

http://img1.mukewang.com/6048b525000190d308930857.jpg为什么用getattr不能获得name

提问者:慕哥0293995 2021-03-10 20:03

个回答

  • 慕尼黑3176241
    2021-03-11 19:18:13

    class Person(object):
        def __init__(self, name, gender, score):
            self.name = name
            self.gender = gender
            self.score = score
        def __str__(self):
            return 'name:{},gender:{},score:{}'.format(self.name, self.gender, self.score)
        def __repr__(self):
            return 'name:{},gender:{},score:{}'.format(self.name, self.gender, self.score)
    n = Person('Bob', 'Male', '97')
    print(n)
    m = getattr(n, 'name', 'void')
    print(m)

    这样就没问题。   我看不懂你那第13行 b.tian 是个什么东西,而且getattr里对象和属性用逗号分隔,你用的啥?

    getattr可以接收3个参数,用逗号隔开,第一个是对象,第二个是属性,第三个是返回值,返回值可以不写,但如果没有该属性就会报错。我写的加了返回值,如果属性不存在,就会返回 void ,而不会报错。