# lz 最近看廖雪峰的 python3 教程实战, 写代码时遇到一个问题, 此为背景
暂时只贴部分代码,其余部分代码放在 github 上:
https://github.com/hfutcbl/python-liaoxuefeng_practice/tree/master/aiohttpPracticepython 版本:
python3 --version
Python 3.5.2
代码:
类的代码
class User(Model):
__table__ = 'users'
id = StringField(primary_key=True, default=next_id, ddl='varchar(50)')
email = StringField(ddl='varchar(50)')
passwd = StringField(ddl='varchar(50)')
admin = BooleanField()
name = StringField(ddl='varchar(50)')
image = StringField(ddl='varchar(500)')
created_at = FloatField(default=time.time)
调用代码
u = User(name='Test1', email='test1@example.com', passwd='1234567890', image='about:blank')
......
def getValueOrDefault(self, key):
print('email:%s, passwd:%s, name:%s, image:%s' % (self['email'], self['passwd'], self['name'], self['image']))
print(self.email, self.passwd,
self.name, self.image, '\n','self:', self)
结果:
email:test1@example.com, passwd:1234567890, name:Test1, image:about:blank
test1@example.com <StringField, varchar(50):None> <StringField, varchar(50):None> <StringField, varchar(500):None>
self: {'email': 'test1@example.com', 'name': 'Test1', 'image': 'about:blank', 'passwd': '1234567890'}
用 self[key] 访问可以正常获取数据,但用 self.key 只能获得传入的 4 个参数中的其中一个正确数据,比如这次是 email ,每次运行能够获取正确数据的 key 值不一样,运行多次亲测:
email:test1@example.com, passwd:1234567890, name:Test1, image:about:blank
<StringField, varchar(50):None> 1234567890 <StringField, varchar(50):None> <StringField, varchar(500):None>
self: {'passwd': '1234567890', 'email': 'test1@example.com', 'image': 'about:blank', 'name': 'Test1'}
有知道的大神能解答下吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/316894
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.