V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wwqgtxx  ›  全部回复第 71 页 / 共 193 页
回复总数  3845
1 ... 67  68  69  70  71  72  73  74  75  76 ... 193  
2017-07-28 23:12:45 +08:00
回复了 Counter 创建的主题 问与答 怎么样可以在系统登录前执行 exe 或 bat 文件?
@Event 这个只有在登陆后才会执行
2017-07-28 23:06:01 +08:00
回复了 saximi 创建的主题 Python 请问怎么理解例子中类实例化的输出?
@saximi 至于为什么子类不公用父类的元类实例,这个问题其实很好解释,你有注意到 Meta 类的__init__方法了么,他传递进来了一个 what 参数不知道你注意到没,这个参数实际上传进来的就是你定义的 Class 这个类本身(注意不是 Class 的实例,是 Class.__class__),而如果你的子类公用了父类的元类实例,这个参数就会导致问题,他将无法正常初始化一个子类对象而仅仅是初始化出来一个父类对象而已

至于你说的第二点,仔细看看我给你找的源码就应该知道,type.__call__做的事情其实就是调用了类的__new__来生成了一个空对象,然后把这个对象传入__init__来初始化,所以你的归纳基本上正确
2017-07-28 15:40:53 +08:00
回复了 xiaoheijw 创建的主题 NGINX nginx 启动报错 ,使用 systemctl start nginx 启动报错
journalctl -u nginx 看看
实测 pyqt5 的 webengine 默认支持 javascript
2017-07-28 10:01:02 +08:00
回复了 saximi 创建的主题 Python 请问怎么理解例子中类实例化的输出?
@saximi 我给你找了一下 type.__call__的具体实现,你可以自己看看
https://github.com/python/cpython/blob/master/Objects/typeobject.c#L921
2017-07-28 06:36:32 +08:00
回复了 saximi 创建的主题 Python 请问怎么理解例子中类实例化的输出?
@saximi 这个地方你不需要明白,只要记住就行了,所有__xx__的方法都是用来给解析器或者系统库隐式调用的,至于具体为什么,你需要去看 cpython 的源代码,我记得这一部分是用 c 写的。就好比 c++初始化一个类就会调用构造方法一样,这个是编译器行为,过度探究原因并没有什么意义
2017-07-27 21:44:08 +08:00
回复了 saximi 创建的主题 Python 请问怎么理解例子中类实例化的输出?
你要注意看就会发现__call__方法是一个绑定方法,即他需要一个 self 参数,也就是说他必须在一个对象实例上调用,而 python 不可能每次在实例化 Class_1 的时候都实例化一个新的 MyType,这样又耗费性能和内存,又完全没有意义,所以他是在你类定义的时候就初始化了一个 MyType 的实例,然后每次实例化 Class_1 的时候都调用这个 MyType 的实例的__call__方法
最后,实际上你初始化一个 Class_1 实例的调用栈是这样的

Class_1() -> 定义类的时候保存的 MyType 的实例.__call() -> type.__call__ -> Class_1.__new__ -> object.__new__ -> Class_1.__init__

然后反向出栈
2017-07-27 21:37:07 +08:00
回复了 saximi 创建的主题 Python 请问怎么理解例子中类实例化的输出?
你要明白 python 是解析式语言,所以语句是顺序执行的,当你定义 Class_1 并指定 MyType 作为它的 metaclass 的时候就隐含的初始化了一个 MyType 的实例
而你的 main 是放在最后的,所以当然是后输出___test1___
2017-07-27 21:33:24 +08:00
回复了 saximi 创建的主题 Python 请问怎么理解例子中类实例化的输出?
@saximi 你上面那个情况先出来 call 两个 MyType 的情况是因为你指定了 MyType 作为 Class_1 的 metaclass,所以 python 先实例化了一个 MyType 给 Class_1 备用
2017-07-27 21:30:21 +08:00
回复了 saximi 创建的主题 Python 请问怎么理解例子中类实例化的输出?
@saximi 因为 type.__call__.调用了 Class_1.__new__呀…
2017-07-26 22:40:44 +08:00
回复了 saximi 创建的主题 Python 请问怎么理解例子中类实例化的输出?
首先,类只有在实例化(即 类名(args))的时候才会先调用__new__再调用__init__
第二,metaclass 就是负责实例化这个过程的,即 类名(args)这个调用等同于 Meta 类名.__call__(类名,args)
而你自定义的类中的__new__和__init__本质上是 type.__call__调用的,所以造成了你看到的输出顺序
先用局域网两台电脑之间测速再测外网
2017-07-26 21:45:36 +08:00
回复了 crab 创建的主题 分享发现 查询自己 QQ 号码注册的具体时间
@c4tn java 的毫秒版本 unix 时间戳
2017-07-26 18:12:47 +08:00
回复了 bccber 创建的主题 Python 用类作字典的 Key 能搞不?
刚才没注意,python 的 dict 会考虑__eq__的,测试方法如下
>>> class A:
... def __hash__():
... return 1
...
>>>
>>> class A:
... def __hash__(self):
... return 1
... def __eq__(self,a):
... return True
...
>>> {A():1,A():2}
{<__main__.A object at 0x0000026C84DA3D30>: 2}
>>> class A:
... def __hash__(self):
... return 1
...
>>> {A():1,A():2}
{<__main__.A object at 0x0000026C84DA3320>: 1, <__main__.A object at 0x0000026C84DA3D68>: 2}
>>>
2017-07-26 17:12:08 +08:00
回复了 bccber 创建的主题 Python 用类作字典的 Key 能搞不?
@bccber python 的 dict 并不考虑你的__hash__和__eq__,他是直接比较内存地址的
2017-07-26 12:10:34 +08:00
回复了 bccber 创建的主题 Python 用类作字典的 Key 能搞不?
当然可以了
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> class A:
... pass
...
>>> {A():1,A():2}
{<__main__.A object at 0x0000026C84DA32E8>: 1, <__main__.A object at 0x0000026C84DA3320>: 2}
>>>
1 ... 67  68  69  70  71  72  73  74  75  76 ... 193  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2808 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 56ms · UTC 06:56 · PVG 14:56 · LAX 22:56 · JFK 01:56
♥ Do have faith in what you're doing.