断言错误,类型对象'Student'没有属性'name'

时间:2019-11-23 11:39:59

标签: python attributeerror

我正在为一个类编写代码,但收到以下断言错误:类型对象'Student'没有属性'name'

这些主张需要经过:

assert isinstance(getattr(Student, "name"), property)
assert isinstance(getattr(Student, "imt_name"), property)
assert isinstance(getattr(Student, "semester"), property)

我不明白为什么,因为我知道属性名称,imt_name和semester应该是实例的一部分,而不是类的属性。

class Student():
    """ ein Student """

    def __init__ (self, name, imt_name, semester):
        self.name = name
        self.imt_name = imt_name
        self.semester = semester

    def __str__(self):
        return "{} {} in Semester {}".format(self.name, self.imt_name, self.semester)

教授会犯错吗?还是我不完全了解?

2 个答案:

答案 0 :(得分:0)

您可以使用hasattr函数检查给定类的实例是否具有给定属性:

    john = Student("A", "b", "c")
    assert hasattr(john, "name")

答案 1 :(得分:-1)

您只需回答您的问题:

  

属性名称,imt_name和学期应该是实例的一部分,而不是类的属性

从未调用过__init__方法,请尝试:

john = Student('john', 'smith', 2)
assert hasattr(john, "name")
assert isinstance(getattr(john, "name"), str)

第一个断言是检查实例是否具有属性,第二个断言是检查实例的类型。