从文档
每个对象都有一个标识,一个类型和一个值。
type(obj)
返回对象的类型id(obj)
返回对象的ID 是否有返回其值的东西?对象(例如用户定义的对象)的值代表什么?
答案 0 :(得分:0)
对于每个Python类,都有针对不同情况执行的特殊函数。类的__str__
返回被称为print(obj)
或str(obj)
时将使用的值。
示例:
class A:
def __init__(self):
self.a = 5
def __str__(self):
return "A: {0}".format(self.a)
obj = A()
print(obj)
# Will print "A: 5"
答案 1 :(得分:0)
请注意,并非所有对象都具有__dict__
属性,而且有时在对象dict(a)
实际上可以解释为字典的情况下调用a
会导致{的合理转换。 {1}}到本机python字典。例如,使用numpy数组:
a
但是In [41]: a = np.array([[1, 2], [3, 4]])
In [42]: dict(a)
Out[42]: {1: 2, 3: 4}
没有属性a
,其值为1
。相反,您可以使用2
和hasattr
动态检查对象的属性:
getattr
因此,In [43]: hasattr(a, '__dict__')
Out[43]: False
In [44]: hasattr(a, 'sum')
Out[44]: True
In [45]: getattr(a, 'sum')
Out[45]: <function ndarray.sum>
没有a
作为属性,但是确实有__dict__
作为属性,而sum
是a.sum
。
如果要查看getattr(a, 'sum')
具有的所有属性,可以使用a
:
dir
(由于numpy数组很多,我只显示了前5个属性。)
答案 2 :(得分:0)
要真正查看对象的值/属性,应使用magic method __dict__
。
这是一个简单的示例:
class My:
def __init__(self, x):
self.x = x
self.pow2_x = x ** 2
a = My(10)
# print is not helpful as you can see
print(a)
# output: <__main__.My object at 0x7fa5c842db00>
print(a.__dict__.values())
# output: dict_values([10, 100])
或者您可以使用:
print(a.__dict__.items())
# output: dict_items([('x', 10), ('pow2_x', 100)])