Ipython代码完成SEEMS正在为web2py工作但它不会留下建议以及我认为最有用的建议:
我缺少什么?有没有人有什么建议?
这是说明我的意思的ipython会话。
E:\web2py>python web2py.py -M -S exp2
web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2011
Version 1.99.2 (2011-09-26 06:55:33) stable
Database drivers available: SQLite3, pymysql
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)]
Type "copyright", "credits" or "license" for more information.
IPython 0.10.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
In [1]: db.
db.Field db.__module__ db.get
db.Table db.__ne__ db.has_key
db.__call__ db.__new__ db.import_from_csv_file
db.__class__ db.__reduce__ db.import_table_definitions
db.__cmp__ db.__reduce_ex__ db.items
db.__contains__ db.__repr__ db.iteritems
db.__delattr__ db.__setattr__ db.iterkeys
db.__delitem__ db.__setitem__ db.itervalues
db.__dict__ db.__sizeof__ db.keys
db.__doc__ db.__str__ db.parse_as_rest
db.__eq__ db.__subclasshook__ db.pop
db.__format__ db.__weakref__ db.popitem
db.__ge__ db._update_referenced_by db.rollback
db.__getattr__ db.check_reserved_keyword db.set_folder
db.__getattribute__ db.clear db.setdefault
db.__getitem__ db.commit db.smart_query
db.__gt__ db.copy db.update
db.__hash__ db.define_table db.values
db.__init__ db.distributed_transaction_begin db.viewitems
db.__iter__ db.distributed_transaction_commit db.viewkeys
db.__le__ db.executesql db.viewvalues
db.__len__ db.export_to_csv_file
db.__lt__ db.fromkeys
In [1]: db.tables
Out[1]:
['auth_user',
'auth_group',
'auth_membership',
'auth_permission',
'auth_event',
'auth_cas',
'su']
In [2]: db.su.
db.su.__call__ db.su.__iter__ db.su._create_references db.su.iteritems
db.su.__class__ db.su.__le__ db.su._drop db.su.iterkeys
db.su.__cmp__ db.su.__len__ db.su._filter_fields db.su.itervalues
db.su.__contains__ db.su.__lt__ db.su._insert db.su.keys
db.su.__delattr__ db.su.__module__ db.su._listify db.su.on
db.su.__delitem__ db.su.__ne__ db.su._truncate db.su.pop
db.su.__dict__ db.su.__new__ db.su._validate db.su.popitem
db.su.__doc__ db.su.__reduce__ db.su.bulk_insert db.su.setdefault
db.su.__eq__ db.su.__reduce_ex__ db.su.clear db.su.truncate
db.su.__format__ db.su.__repr__ db.su.copy db.su.update
db.su.__ge__ db.su.__setattr__ db.su.drop db.su.update_or_insert
db.su.__getattr__ db.su.__setitem__ db.su.fromkeys db.su.validate_and_insert
db.su.__getattribute__ db.su.__sizeof__ db.su.get db.su.values
db.su.__getitem__ db.su.__str__ db.su.has_key db.su.viewitems
db.su.__gt__ db.su.__subclasshook__ db.su.import_from_csv_file db.su.viewkeys
db.su.__hash__ db.su.__weakref__ db.su.insert db.su.viewvalues
db.su.__init__ db.su._build_query db.su.items db.su.with_alias
In [2]: db.su.fields
Out[2]: ['id', 'k1', 'k2', 'k3', 'k4', 'k5', 'k6', 'k7', 'sufile', 'function']
答案 0 :(得分:4)
我刚刚承诺对web2py进行更改,以解决db.tables和db.table.fields的问题。感谢您发现此问题。如果您发现其他未显示的属性,请告诉我,我会尝试解决它。请使用web2py邮件列表或Google代码web2py问题跟踪器报告此问题,以便我们不必在各个地方寻找它们。 ; - )
答案 1 :(得分:2)
IPython的属性选项卡完成基于dir
(带有一些额外的糖),因此它不会找到仅通过自定义__getattr__
请求存在的属性,这对于代理来说尤其常见/远程对象代码,可能是web2py如何定义完成中缺少的属性。
除了建立如何定义可用名称的约定之外,我不知道检查这些事情的方法。
示例类,具有cat
和car
属性:
class C(object):
def __init__(self):
self.cat = 'tabby'
self._car = 'edsel'
def __getattr__(self, attr):
if attr == 'car':
return self._car
else:
raise AttributeError(attr)
但此类的实例上的制表符只会显示cat
,因为car
仅在请求时定义。
有关详细信息,请参阅属性匹配代码for the completer以及其中使用的slightly extended版本的目录。