如何读取导入对象的代码?



我不知道一个对象支持什么属性。我如何打开模块并弄清楚"引擎盖下"发生了什么?

例如,我想找出datetime模块中的datetime对象在其__init__中具有哪些属性:

import datetime
curtime = datetime.datetime.now()
print(curtime[0])

但是,由于datetime没有__getitem__方法,必须有不同的方式访问每个部分的时间(day, month, year等)

我发现(通过反复试验)你可以这样做:

datetime.datetime.now().time()
datetime.datetime.now().date()

但是我不确定我在这里做的事情的正确名称是什么,以及如何找到属于这个对象/类的其他方法

在您的终端中,键入pydoc (whatever),您应该能够看到它具有的所有变量和函数。如果没有文档记录,dir([whatever])是可行的方法。在任何情况下,显然是谷歌。顺便说一句,为了澄清你的问题中的术语,datetime是一个模块。您必须理解模块、类和对象是不同的东西。您可以在这里了解更多关于模块和dir()函数的信息。

我发现dir函数在处理未知和未记录的对象时最有用(顺便说一句,datetime有很好的记录)。

但如果没有记录:

>>> import datetime
>>>
>>> dir(datetime)
['MAXYEAR', 'MINYEAR', '__doc__', '__name__', '__package__', 'date', 
'datetime', 'datetime_CAPI', 'time', 'timedelta', 'tzinfo']
>>> datetime.date
<type 'datetime.date'>
>>> dir(datetime.date)
['__add__', '__class__', '__delattr__', '__doc__', '__eq__', '__format__',
'__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__',
'__lt__', '__ne__', '__new__', '__radd__', '__reduce__', '__reduce_ex__',
'__repr__', '__rsub__', '__setattr__', '__sizeof__', '__str__', '__sub__',
'__subclasshook__', 'ctime', 'day', 'fromordinal', 'fromtimestamp',
'isocalendar', 'isoformat', 'isoweekday', 'max', 'min', 'month', 'replace',
'resolution', 'strftime', 'timetuple', 'today', 'toordinal', 'weekday',
'year']

最新更新