我试图用python闭包做一些有点奇怪的事(至少对我来说).说我有2个这样的课程:
#!/usr/bin/python
import types
def method_a(self):
print "ma %d" % self.val
class A(object):
def __init__(self):
self.val = 5
pass
def foo(self, a):
def closure(self):
print "closure %d, %d" % (self.val, a)
return closure
class B(object):
def __init__(self):
self.val = 10
pass
def foo(self):
print "B::foo %d" % self.val
a = A()
b = B()
b.undo = types.MethodType(a.foo(1), b)
b.undo()
Run Code Online (Sandbox Code Playgroud)
因此,对象a的方法返回一个由对象b使用的闭包,闭包函数将绑定到对象b,因为上面的代码将导致:
closure 10, 1
Run Code Online (Sandbox Code Playgroud)
我的问题是:无论如何都要允许closure()方法访问属性,对象的方法是什么?
谢谢,
我创建了一个2 Gedit的插件作为描述的添加项目到菜单这里.如何将键盘快捷键/加速键/加速键绑定到此菜单项?
这是我的第一个Portlet.我没有在servlet中获取值.请看节目.在我的自定义portlet Java类doView()方法中,我展示了一个JSP页面
public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
include(viewJSP, renderRequest, renderResponse);
}
Run Code Online (Sandbox Code Playgroud)
在view.jsp页面内部,我引用一个servlet来接收值:
<form action="formServlet" method="post">
<h1>Please Login</h1>
Login: <input type="text" name="login"><br>
Password: <input type="password" name="password"><br>
<input type=submit value="Login">
</form>
Run Code Online (Sandbox Code Playgroud)
内部web.xml文件:
<servlet>
<servlet-name>formServlet</servlet-name>
<servlet-class>FormServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>formServlet</servlet-name>
<url-pattern>formServlet</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
在我的servlet里面
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = (String)request.getParameter("login");
System.out.println("The Name is "+name);
}
Run Code Online (Sandbox Code Playgroud)
但我不知道为什么没有调用servlet.
我非常困惑何时使用什么,以及使用这些参数的优点和缺点是什么。
谁能帮我澄清一下吗?
我最近在 Bash 脚本中发现了这样的片段:
$ echo ${A=3}
Run Code Online (Sandbox Code Playgroud)
现在,我知道如果是“falsy”,${A:=3}则会设置变量,或者如果是“falsy”,则会返回 3 。不过,我从未见过这些类似的不带冒号的表达式,而且我在Bash 文档中找不到这些不带冒号的表达式的解释。AA${A:-3}A
这里发生了什么?
让我们假设我有一个有文章和作者的应用程序.它将数据保存在Redis基础中.这些文章存储为哈希,如下面以JSON语法表示的那样:
{ "title" : "My title", "content" : "This is a content", "authorId" : 1}
Run Code Online (Sandbox Code Playgroud)
另外,我的作者用哈希代表:
{ "name": "John Smith", "username" : "jsmith", "password" : "secret", "id" : 1}
Run Code Online (Sandbox Code Playgroud)
问题是,如何获取给定作者ID的所有文章?在Redis中有一些命令可以做到吗?你会手动检索和过滤它们吗?或者我表达这种关系的方式有缺陷吗?你会建议什么?
给出以下xml:
<!-- file.xml -->
<video>
<original_spoken_locale>en-US</original_spoken_locale>
<another_tag>somevalue</another_tag>
</video>
Run Code Online (Sandbox Code Playgroud)
替换<original_spoken_locale>标签内部值的最佳方法是什么?如果我确实知道价值,我可以使用类似的东西:
with open('file.xml', 'r') as file:
contents = file.read()
new_contents = contents.replace('en-US, 'new-value')
with open('file.xml', 'w') as file:
file.write(new_contents)
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,我不知道它的价值.
好吧,我是想在蟒蛇一些非常大量的评价抛出-我这时才意识到是-约为10 ^(10 ^ 120)的相当巨大的.无论如何,我后退到10**10**5和10**10**6.检查两者的时差给我带来了这个有点奇怪的发现,我认为这是一种低效率.
结果是,当我尝试时cProfile.run("x=10**10**6"),花了0.3秒,cProfile.run("print 10**10**6")花了40秒.
然后我尝试x= 10**10**6了几乎没有时间,但此后每次我解释 x(x然后输入)它将需要很长时间(我想40秒).所以,我假设每次我解释x它再次计算整个值.
所以我的问题是:效率不是很低吗?假设我在模块中声明了一些变量x= 10**10,并且每次我引用xpython解释器都会10**10反复计算值?
Gory的细节将非常感激.
我正在尝试使用Alloy更新Titanium中的集合中的模型.
此代码无效:
var contactos = Alloy.Collections.instance('Contact');
var contacto = contactos.get({id: 3});
// Output: {id:3, name:'Juan 3', marcado: 1}
Ti.API.debug('get: ' + JSON.stringify(contacto));
contacto.set({marcado: 0});
// Output: {id:3, name:'Juan 3', marcado: 0}
Ti.API.debug('set: ' + JSON.stringify(contacto));
contacto.save();
contactos.fetch();
// Output: [{id:3, name:'Juan 3', marcado: 1},{...},{...}]
Ti.API.debug('despues de save: ' + JSON.stringify( JSON.stringify( contactos ) ));
Run Code Online (Sandbox Code Playgroud)
虽然这是有效的:
var contactos = Alloy.Collections.instance('Contact');
var contacto1 = Alloy.createModel('Contact');
// Output: {id:null, name:'', marcado: 0}
Ti.API.debug('createModel: ' + JSON.stringify(contacto1));
var contacto2 = contactos.get({id: 3});
// Output: …Run Code Online (Sandbox Code Playgroud)