Python2.7定义了一个类,如果在没有参数的情况下调用该类,该类将显示其属性
我有一门课是这样的:Python2.7定义了一个类,如果在没有参数的情况下调用该类,该类将显示其属性,python,class,Python,Class,我有一门课是这样的: class DATA: # class for the data def __init__(self, filename): f_in = open(input_file, 'r') data = json.load(f_in) f_in.close() # organizational data self.T = data['temperature'] self
class DATA:
# class for the data
def __init__(self, filename):
f_in = open(input_file, 'r')
data = json.load(f_in)
f_in.close()
# organizational data
self.T = data['temperature']
self.appVersion = data['appVersion']
我可以使用以下命令创建类的对象:
D = DATA(filename)
我可以使用
D.T
这个类将有很多属性,我很快就会忘记它们的名字。。。如果我单独调用D
,我需要的是一个带有一些有用信息的提示
例如:
>>>D
The attributes of D are:
- T (X)
- appVersion (Y)
其中,X
和Y
是相应的值
是否有一种内置的方法来实现这一点?还是其他(更好的)方法
谢谢。您可以在docstring中记录属性:
class DATA(object):
"""this says something about the object.
Attributes:
T: ...
"""
...
现在,您可以访问由以下人员编写的文档:
help(DATA)
或:
您可以在docstring中记录属性:
class DATA(object):
"""this says something about the object.
Attributes:
T: ...
"""
...
现在,您可以访问由以下人员编写的文档:
help(DATA)
或:
您可以使用
\uuuu dict\uuuu
属性:
class Data:
def __init__(self):
self.foo = 'value 1'
self.bar = 'value 2'
d = Data()
print(d.__dict__)
上面印着:
{'bar': 'value 2', 'foo': 'value 1'}
要在提示符下轻松访问它,请尝试以下操作:
def info(obj):
print(obj.__dict__)
然后在提示下,只需键入:
info(d)
您可以使用
\uuuu dict\uuuu
属性:
class Data:
def __init__(self):
self.foo = 'value 1'
self.bar = 'value 2'
d = Data()
print(d.__dict__)
上面印着:
{'bar': 'value 2', 'foo': 'value 1'}
要在提示符下轻松访问它,请尝试以下操作:
def info(obj):
print(obj.__dict__)
然后在提示下,只需键入:
info(d)
如果你想要精确的功能,你输入时会得到什么
>>> D
是数据的返回值
示例用法(使用重写的\uuuu init\uuu
直接获取数据):
但是,您应该注意,这是对\uu repr\uu
的滥用;发件人:
如果可能的话,[\uuu repr\uu
]应该看起来像一个有效的Python表达式,可以用来重新创建具有相同值的对象(给定适当的环境)。如果这是不可能的,则应返回格式为
的字符串
因此,其他答案更像Python。如果您想要精确的功能,那么您键入时会得到什么
>>> D
是数据的返回值
示例用法(使用重写的\uuuu init\uuu
直接获取数据):
但是,您应该注意,这是对\uu repr\uu
的滥用;发件人:
如果可能的话,[\uuu repr\uu
]应该看起来像一个有效的Python表达式,可以用来重新创建具有相同值的对象(给定适当的环境)。如果这是不可能的,则应返回格式为
的字符串
因此,其他答案更像python。为什么不将它们打印在\uuuu init\uuuu
中,然后将它们放在docstring中呢?这听起来是\uu repr\uuu
的一个很好的用法。实现docstring并使用帮助是目前为止最好的方法。对于更接近您想要的内容,如果您使用ipython,还可以使用D?
(使用?after object)获取docstring(+其他信息,包括参数)。但是,如果您对上述交互死心塌地,您可能会滥用\uuuurepr\uuuuu
来完成这项工作……为什么不将它们打印到\uuuuinit\uuuuuuu
中,并将其放入docstring中呢?这听起来是\urepr\uuuuu
的一个很好的用法。实现docstring并使用帮助是目前为止最好的方法。对于更接近您想要的内容,如果您使用ipython,还可以使用D?
(使用?after object)获取docstring(+其他信息,包括参数)。但是,如果您对上述交互死心塌地,您可能会滥用\uuuu repr\uuuu
来实现这一点……我喜欢这个,因为它会打印实际值<代码>帮助(数据)
不会。但是你知道如何通过在提示符下输入D
来访问这个函数吗?这可能吗?有关\uu repr\uu
的说明,请参阅其他答案。这就是如何实现所需行为的方法。请参阅@mgilson关于vars(D)
的评论。这是获取对象属性和值的一种更简单的方法。我喜欢这样,因为它可以打印实际值<代码>帮助(数据)
不会。但是你知道如何通过在提示符下输入D
来访问这个函数吗?这可能吗?有关\uu repr\uu
的说明,请参阅其他答案。这就是如何实现所需行为的方法。请参阅@mgilson关于vars(D)
的评论。这是获取对象属性和值的更简单的方法。好主意。这绝对符合“有用信息”的要求,但是,它缺少实际属性的值。@tsroten——当然。只需打印vars(D)
也很有帮助。这将为您提供属性名称和值。有时我喜欢把它放在一个循环中:对于k,v在排序中(vars(D).items()):打印k,v
很好!我不知道vars
函数。好主意。这绝对符合“有用信息”的要求,但是,它缺少实际属性的值。@tsroten——当然。只需打印vars(D)
也很有帮助。这将为您提供属性名称和值。有时我喜欢把它放在一个循环中:对于k,v在排序中(vars(D).items()):打印k,v
很好!我不知道vars
函数。这将完全满足@otmezger的要求。但是,你可能不应该这么做。关于\uuu repr\uuu
,由repr()
内置函数和字符串转换(反引号)调用:以计算对象的“正式”字符串表示形式。如果可能的话,这应该看起来像一个有效的Python表达式,可以用来重新创建具有相同值的对象(给定适当的环境)。@tRoten这是一个很好的观点,我将在我的回答中添加一个免责声明这将完全满足@otmezger的要求。但是,你可能不应该这么做。关于\uuu repr\uuu
,由repr()
内置函数和字符串转换(反引号)调用:以计算对象的“正式”字符串表示形式。如果可能的话,这应该是