V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  saximi  ›  全部回复第 10 页 / 共 11 页
回复总数  201
1 ... 2  3  4  5  6  7  8  9  10  11  
2017-07-26 20:22:08 +08:00
回复了 saximi 创建的主题 Python 请问怎么理解例子中类实例化的输出?
@ivechan 非常感谢指点!
1、我说的模块被加载的时候就是指 import 的时候,也就是在执行主程序体第一条语句( print("---test---") )之前的时间。
2、这个例子中,元类的__call__ 里面并没有调用 Class_1 的 __new__吧?
3、语句 2 是执行的是 Meta_1 的元类,也就是 type 的__call__方法没错吧?难道这条语句会导致语句 4 的执行,如果不是导致执行语句 4 的话,就不会有这个输出了:“ entering Class_1.__new__() ”
2017-07-25 22:36:55 +08:00
回复了 saximi 创建的主题 Python 请问这个例子中的 lambda 表达式是怎么起作用的?
谢谢大家指点,我想明白了,prices 作为一个字典,根据值进行排序后,MIN 或 MAX 方法返回的是字典的键而不是值
2017-07-25 21:24:30 +08:00
回复了 saximi 创建的主题 Python 请问 Visual Studio CODE 如何设置才能在开发 Python 时让断点生效?
再顶下,会不会是我的配置文件有问题呢,大家的 launch.json 文件是一样的么
2017-07-24 19:48:16 +08:00
回复了 saximi 创建的主题 Python 请问 Visual Studio CODE 如何设置才能在开发 Python 时让断点生效?
@GoBeyond 如果没有成功连接调试器是否程序都不会执行?但是我按 F5 时是可以执行的,整个程序都跑完了。
2017-07-24 19:47:39 +08:00
回复了 saximi 创建的主题 Python 请问 Visual Studio CODE 如何设置才能在开发 Python 时让断点生效?
@zhusimaji 我装了插件的,Don Jayamanne 的 PYTHON 插件,左上角的解释器是显示 PYTHON 的,我设置断点时只会显示红色圆点,却不会出现一个黄绿色的箭头色块。
@yufpga 去掉 metaclass 的话,确实就不会发生调用 Foo 类的__call__方法了,但是就是不明白为何加上 metaclass 就会如此呢
@lrxiao 为何写了 metaclass 的__call__就会导致实例化时的调用呢,我也看过一些介绍 metaclass 的博文,但是没有针对这个问题作出解释
2017-07-19 22:21:53 +08:00
回复了 saximi 创建的主题 Python 请问如何发帖才能确保代码的缩进能正常显示?
楼上,请问 GIST 链接怎么操作,我是小白,很多术语还不明白,谢谢
2017-07-19 21:11:55 +08:00
回复了 saximi 创建的主题 Python 请问如何发帖才能确保代码的缩进能正常显示?
@chanssl 您说的对,我现在才知道原来 MARKDOWN 是有专门的语法支持的。
如果我不用 MARKDOWN 而选择 DEFAULT,好像就无法显示出缩进了?
不知道在 DEFAULT 模式下,如何体现缩进呢,只用空格是不行的
2017-07-18 22:47:26 +08:00
回复了 saximi 创建的主题 Python 请问 PYTHON3 中子类没有显式地调用父类的__init__方法会如何?
如何父类有多个子类,有一个子类显式调用了父类的__init__方法,但是其余子类并没有,这样会导致什么问题?
2017-07-18 21:48:41 +08:00
回复了 saximi 创建的主题 Python 请问 Visual Studio CODE 开发 Python 时如何设置断点
@athomas 应该是设置有问题,但是我不知道怎么设置才能使断点生效。我的 launch.json 中的相关内容如下:

"version": "0.2.0",
"configurations": [
{
"name": "Python",
"type": "python",
"request": "launch",
"stopOnEntry": true,
"pythonPath": "${config:python.pythonPath}",
"program": "${file}",
"cwd": "${workspaceRoot}",
"env": {},
"envFile": "${workspaceRoot}/.env",
"debugOptions": [
"WaitOnAbnormalExit",
"WaitOnNormalExit",
"RedirectOutput"
]
},

另外,F11 键既是单步调试模式,又是 VSCODE 全屏快捷键,我一按 F11 就切换全屏而无法进入单步执行,请问这又应该怎么做呢?
2017-07-18 21:37:22 +08:00
回复了 saximi 创建的主题 Python 请教类的实例化的问题
@bravecarrot 感谢,但是我越发糊涂了。
我看了这篇博文 http://python.jobbole.com/83747/
博文的“ 5.__call__”小节写了这段话:“注:构造方法的执行是由创建对象触发的,即:对象=类名();而对于__call__方法的执行是由对象后加括号触发的,即:对象()或者类()()”

就是因为看了这段话,结合这个程序,我才觉得有问题,obj=Foo()这个语句应该是博文中的 对象=类名() 这个形式,所以不应该调用 Foo.__call__()方法才对啊?
关于这个观点,我还有一个例子可以说明,比如下面这段代码和对应的输出,请注意语句 1 就是一个把对象实例化的语句,这个语句并没有调用类的__call__()方法:

class Deco:
def __init__(self,func):
self.func=func
print("__init__执行完毕。func=",self.func)
def __call__(self,*arg,**arg2):
print("开始执行__call__。")
self.func('abc')
print(self,arg,arg2)

class MyCls():
@Deco
def myFunc(self):
print('this is my work arg is %s'%self)

mycls=MyCls()
deco=Deco(mycls.myFunc) #语句 1

代码输出如下:
__init__执行完毕。func= <function MyCls.myFunc at 0x01C49AE0>
__init__执行完毕。func= <__main__.Deco object at 0x01C4B190>
2017-07-17 20:16:37 +08:00
回复了 saximi 创建的主题 Python 请教类的实例化的问题
顺便问一下,为何我在外面编辑好的代码包含了缩进,一贴到论坛里就体现不出缩进了?
2017-07-15 14:47:56 +08:00
回复了 saximi 创建的主题 Python 请大家指点
自己再顶一下,上面说的遗留的问题,还请大家不吝赐教,感谢!
2017-07-12 20:35:12 +08:00
回复了 saximi 创建的主题 Python 请问 Python 中是不是有什么理论的名字是 LGBE ?
@daya0576 谢谢,不过您这篇博客里的 Comments 是需翻墙才能看的? 另外博客内容是一个视频而不是文字说明对吧?
2017-07-12 20:12:31 +08:00
回复了 saximi 创建的主题 Python 请大家指点
@zhusimaji 非常感谢啊!
但是关于第二个问题的回答“语句 4 -> metaclass 是__new__和__init__都是先运行,没有任何问题”我还是没明白。
在语句 1 中已经指定 Foo 类要由 MyType 类来实例化创建,所以我觉得执行“ obj2=Foo()”这个语句时,应该就是实例化了一个类 Foo 的对象并赋值给 obj2,但是要根据 MyType 的定义来实例化。
这时应该去执行 MyType 定义中的__new__和__init__,而不是去执行 Foo 定义中的__new__和__init__。我这个理解错在哪里呢?

另外,您修改后的代码在 PYTHON2 下运行,在类被加载时会先去执行 MyType 中的__new__和__init__,然后再执行语句 3。 但是为何在 PYTHON3 下,类被加载时不会执行 MyType 中的语句,而是直接就执行语句 3 呢?
2017-07-07 21:12:48 +08:00
回复了 saximi 创建的主题 Python 关于装饰器的问题请教,谢谢大家
装饰器是在导入模块时立即执行的,所以装饰函数中的代码在导入模块时会被执行,
但是装饰函数中如果有__init__或__call__模块,这些模块中的代码在导入时是不会被执行的。

我按照上面这个说法来理解对不对呢?
2017-07-07 20:56:13 +08:00
回复了 saximi 创建的主题 Python 请问这个理解对不对
补充举例如下,例如对于以下的代码,如果只是导入模块,那么不会有输出,但是语句 1 实例化后才会执行__init__,而语句 2 才会执行__call__。

class Deco:
def __init__(self,func):
self.func=func
print("__init__执行完毕。func=",self.func)
def __call__(self,*arg,**arg2):
print("开始执行__call__。")
self.func('abc')
print(self,arg,arg2)

class MyCls():
@Deco
def myFunc(self):
print('this is my work arg is %s'%self)

deco=Deco(mycls.myFunc) #语句 1
deco(sendarg='abcdefg') #语句 2
2017-07-07 20:50:13 +08:00
回复了 saximi 创建的主题 Python 请问这个理解对不对
那么正确的说法应该是什么呢?我是自己测试了一下,发现__init__和__call_中的代码在导入模块时没有执行才有此疑问的,恳请指点!
2017-07-06 22:09:25 +08:00
回复了 saximi 创建的主题 Python 关于类实例化的问题
自己顶一下,恳请大家指点,感谢啊!!!!
1 ... 2  3  4  5  6  7  8  9  10  11  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2988 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 21ms · UTC 00:31 · PVG 08:31 · LAX 16:31 · JFK 19:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.