编写一个函数,如果对象恰好是指定类的实例,则返回True;否则错误



我开始在Python中学习继承,我正在努力练习。

我需要创建一个函数def is_same_class(obj, a_class):

将在这里使用:

a = 1
if is_same_class(a, int):
print("{} is an instance of the class {}".format(a, int.__name__))
if is_same_class(a, float):
print("{} is an instance of the class {}".format(a, float.__name__))
if is_same_class(a, object):
print("{} is an instance of the class {}".format(a, object.__name__))

,输出应为:1 is an instance of the class int但是我得到:

1 is an instance of the class int
1 is an instance of the class object

因为所有变量类型都继承自对象类。

如何仅验证子类int并在此停止?

我只能想到:

def is_same_class(obj, a_class):
return isinstance(obj, a_class)

对于intobject都返回True

如果您想知道obj的精确类型是否是a_class(而不是a_class的子类型),那么您需要type函数。

def is_same_class(obj, a_class):
return type(obj) is a_class
is_same_class(1, int)    # True
is_same_class(1, object) # False

python中的一切(好吧,几乎)都是object。如果您想使用最后一个if作为回退(当a既不是int也不是float时),则需要使用elif:

if is_same_class(a, int):
print("{} is an instance of the class {}".format(a, int.__name__))
elif is_same_class(a, float):
print("{} is an instance of the class {}".format(a, float.__name__))
elif is_same_class(a, object):
print("{} is an instance of the class {}".format(a, object.__name__))

但是你也可以放弃这个条件,因为它总是为真:

if is_same_class(a, int):
print("{} is an instance of the class {}".format(a, int.__name__))
elif is_same_class(a, float):
print("{} is an instance of the class {}".format(a, float.__name__))
else:
print("{} is an instance of the class {}".format(a, object.__name__))

相关内容

  • 没有找到相关文章

最新更新