我开始在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)
对于int和object都返回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__))