woshicai

woshicai

V2EX 第 163045 号会员,加入于 2016-03-12 21:35:37 +08:00
woshicai 最近回复了
2017-05-20 08:11:01 +08:00
回复了 Andor_Chen 创建的主题 Python 送几本《流畅的 Python 》
fluent python
前排
> (其实我是来看评论的)
2016-11-01 11:41:04 +08:00
回复了 woshicai 创建的主题 Python 新人求助, 为什么实例属性没有覆盖类属性
@focusheart
非常感谢回答, 终于明白 self.key 为什么不行了。在 ModelMetaclass 的 __new__函数里没有确实没有将 key 处理为 instance property 。
但是还是有个问题:并不是所有 self.key 打印出来的值都是类中定义的 default 值,见输出:

[email protected] <StringField, varchar(50):None> <StringField, varchar(50):None> <StringField, varchar(500):None>

还有个问题:
最初我是用 getattr(self, key, None) 来获取属性,
class Model:
......
def __getattr__(self, key):
try:
return self[key]
print('-------\n getattr() called \n-------------')
......
发现 getattr 每次运行只被调用一次(我期待调用次数和 key 的个数一样),想知道 getattr 的调用顺序。
谢谢各位大神。
2016-11-01 09:36:35 +08:00
回复了 woshicai 创建的主题 Python 新人求助, 为什么实例属性没有覆盖类属性
@slideclick 感谢解答。
尴尬的是我用的不是 Django 框架, 前面没说清楚, 我是让类 User 是继承 dict 类, 所以 self[key]的方式是可以的。
而且 print(self)打印出来的就是一个 dict :
self: {'email': '[email protected]', 'name': 'Test1', 'image': 'about:blank', 'passwd': '1234567890'}
2016-11-01 08:25:55 +08:00
回复了 woshicai 创建的主题 Python 新人求助, 为什么实例属性没有覆盖类属性
@GreatMartial 是啊 print(self)可以看到实例的属性是我初始化实例的数据 但是用 self.key 访问到的确实类的属性
@cheetah v 站貌似不支持 markdown
@Trim21

好吧,把问题抽象一下。
简单的说就是我想获取 self 的属性, 用 self[key]能够正常获取我传入的数据, self.key 会出现异常(会返回类的 key 属性 default 值), print(self)显示实例的 key 值对应的是我传入的数据, 所以有疑惑。 想知道 self[key]和 self.key 的区别,为什么返回的结果不一样。
2016-10-31 23:23:50 +08:00
回复了 woshicai 创建的主题 Python 新人求助, 为什么实例属性没有覆盖类属性
自顶一记
没人不开心
2016-10-24 12:52:52 +08:00
回复了 lyver 创建的主题 推广 过节啦,领取好书一起 1024
《 Go 语言程序设计》 Docker 的火热带得动否 Go ?
2016-10-13 16:28:44 +08:00
回复了 magicfam 创建的主题 Python 前端新人接触 Python 感到迷茫
楼上说的有道理,不过怎么问也有技巧, 看不懂先自己查, 查了还是不懂就把问题记录下来, 等主管有空了拿着问题记录去问他, 问完感觉气氛还可以的话聊点代码以外的事情, 比如让他给你推荐学习资料(包括但不限网上文档、 书)等等拉近关系。
个人见解
网易邮箱 APP 可以直接接受 gmail 邮件。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2598 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 05:43 · PVG 13:43 · LAX 21:43 · JFK 00:43
Developed with CodeLauncher
♥ Do have faith in what you're doing.