我正在为一个类编写代码,但收到以下断言错误:类型对象'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)
教授会犯错吗?还是我不完全了解?
答案 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)
第一个断言是检查实例是否具有属性,第二个断言是检查实例的类型。