V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Tianny  ›  全部回复第 8 页 / 共 11 页
回复总数  204
1  2  3  4  5  6  7  8  9  10 ... 11  
2017-03-13 18:10:32 +08:00
回复了 Tianny 创建的主题 Python 求助!关于 pycharm 导入自定义模块的问题!
@lgpqdwjh http://p1.bpimg.com/1949/dccbaca1022f7cc1.png 为什么我改成这样就可以了?并没有加__init__.py ,用 from apis import APIError ,虽然 pycharm 提示找不到模块,但是代码却正确执行了?我现在的所有代码都是在 www 同一个目录下的
2017-03-13 18:09:25 +08:00
回复了 Tianny 创建的主题 Python 求助!关于 pycharm 导入自定义模块的问题!
@mgna17 http://p1.bpimg.com/1949/dccbaca1022f7cc1.png 为什么我改成这样就可以了?并没有加__init__.py ,用 from apis import APIError ,虽然 pycharm 提示找不到模块,但是代码却正确执行了?我现在的所有代码都是在 www 同一个目录下的
2017-03-13 17:46:49 +08:00
回复了 Tianny 创建的主题 Python 求助!关于 pycharm 导入自定义模块的问题!
pycharm 版本是 2016.2.3
@rwecho 那么这两者的功能是等价的吗?
其实我主要想知道第三段和第四段的意思?
@dant 意思就是我在外部用 setattr 其实是调用类里面的__setattr__方法喽?
2017-02-24 16:52:07 +08:00
回复了 Tianny 创建的主题 Python 深夜问道 Python 题,实在没想明白。求指点!
@enenaaa 非常感谢!懂了!😄
2017-02-24 16:45:36 +08:00
回复了 Tianny 创建的主题 Python 深夜问道 Python 题,实在没想明白。求指点!
@binux 3q 懂了!😄
what's the difference between programmer and coder?
2017-02-24 01:17:53 +08:00
回复了 Tianny 创建的主题 Python 深夜问道 Python 题,实在没想明白。求指点!
@binux 请问为什么 如果不进行 pop 操作,就会访问到 IntegerField('id') 。"getattr(self, k, None)"这个代码的 getattr 是怎么调用的?不理解,希望您能详解给我讲解下。非常感谢!
2017-02-24 01:03:35 +08:00
回复了 Tianny 创建的主题 Python 深夜问道 Python 题,实在没想明白。求指点!
@enenaaa 还有个问题。
我在这句“ u = User(id=12345, name='Michael', email='[email protected]', password='my-pwd')”后面加上“ print(dir(u))”。
当在元类中不进行 pop 操作,打印结果是带有 id 即属性中是有 id 的。
当在元类中进行 pop 操作,打印的结果不带 id 即属性中没有 id 。
那么问题来了, dir(u)这个操作,作用是返回实例 u 的属性的吧?按我的理解,不管元类有没有 pop ,在初始化实例 u 后,实例 u 不是肯定有 id 这个属性吗?
求解释,非常感谢!
2017-02-24 00:52:35 +08:00
回复了 Tianny 创建的主题 Python 深夜问道 Python 题,实在没想明白。求指点!
@enenaaa 再次请教下,说一下我的思路,希望您能帮我看下,不对的地方请指出,万分感谢!要创建 User 类,先根据元类 ModelMetaclass 来创建它。当执行元类后,如果不执行 pop 操作,此时 User 类的 attrs 即属性集合是{id: IntegerField('id') ,__mapping__:{id: IntegerField('id') }},这里我只是拿出 id 举个例子。然后,当创建 User 类的对象 u 时,即执行 u = User(id=12345, name='Michael', email='[email protected]', password='my-pwd')这一步,需要初始化对象就是执行__init__,因为 User 类的父类是 Model ,同时 Model 类的__init__方法是调用 dict 的__init__方法,所以初始化实例 u 时,调用的是 dict 的__init__方法,所以根据传入的参数属性就变成了字典形式{id:12345}。最后执行 u.save(),当执行到 args.append(getattr(self, k, None))时,此时就像你前面说的“用 getattr 函数或 a.b 形式访问类和对象的属性时, 先从类定义(__dict__中)获取,找不到的话则调用 __getattr__”,因为前面没有执行 pop 操作, User 类中有属性 id ,那么 getattr(self,id,None)会首先到 User 类中查找 id 对应的属性值,为 IntegerField('id')。如果前面元类中执行 pop 操作的话, getattr(id)在 User 类中找不到,就会调用__getattr__,此时执行 return self[key],那么就返回初始化实例 u 后 key id 对应的值,即 12345.
2017-02-23 12:03:18 +08:00
回复了 Tianny 创建的主题 Python 深夜问道 Python 题,实在没想明白。求指点!
@LittleKey 请问,为什么 getattr 函数会先调用__getattribute__去找呢?
2017-02-23 12:02:20 +08:00
回复了 Tianny 创建的主题 Python 深夜问道 Python 题,实在没想明白。求指点!
@enenaaa 请问为什么 getattr 函数优先从类定义里面找呢?
2017-02-23 01:28:49 +08:00
回复了 Tianny 创建的主题 Python 深夜问道 Python 题,实在没想明白。求指点!
为什么要在找到符合条件的 key-value 对并将其放入新的字典 mapping 后,还要将这些 key-value 对从 attrs 字典中去除?也就是在执行下面的操作时
```
for k in mappings.keys():
attrs.pop(k)
```
2017-02-14 14:36:09 +08:00
回复了 Anhedonia 创建的主题 Python 新人问一个关于学习路径的问题
@Anhedonia 廖雪峰的教程有些内容其实对小白并不是非常友好,像一些高阶函数装饰器这些。你可以找 python 基础教程这本书看看。然后再看看 python 核心编程这本书。再回过头来看廖雪峰的教程,把实战做了。慢慢来,楼主其实已经在规划上领先别人一步了,想自己当时大一简直就是愣头青,都没想好自己未来要干啥,都在忙着上酱油课,打游戏,打篮球,,
2017-02-13 21:47:44 +08:00
回复了 Anhedonia 创建的主题 Python 新人问一个关于学习路径的问题
建议你把廖雪峰的实战做了。
@brucezhou awesome thanks !
2017-02-09 23:45:18 +08:00
回复了 lgpqdwjh 创建的主题 程序员 关于定时任务管理
2017-02-09 23:40:34 +08:00
回复了 amanbolatbalabek 创建的主题 程序员 小老外在国内做程序猿好吗?
1  2  3  4  5  6  7  8  9  10 ... 11  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   994 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 22:10 · PVG 06:10 · LAX 15:10 · JFK 18:10
Developed with CodeLauncher
♥ Do have faith in what you're doing.