Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python2.7定义了一个类,如果在没有参数的情况下调用该类,该类将显示其属性_Python_Class - Fatal编程技术网

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()
内置函数和字符串转换(反引号)调用:以计算对象的“正式”字符串表示形式。如果可能的话,这应该是