小编Yan*_*eng的帖子

在python中使用__next__方法的问题

我刚刚开始学习python并正在阅读有关课程的内容.

这是我为一个简单的可迭代类编写的代码:

class maths:
          def __init__(self,x):
             self.a=x
          def __iter__(self):
             self.b=0
             return self
          def next(self):
            if self.b <= self.a:
               self.b = self.b+1
               return self.b-1
            else:
               raise StopIteration


x=maths(5)
  for l in x:
       print l
Run Code Online (Sandbox Code Playgroud)

对于next()方法,当我使用__next__(self)时:
显示以下错误

Traceback (most recent call last):
  File "class.py", line 20, in <module>
    for l in x:
TypeError: instance has no next() method
Run Code Online (Sandbox Code Playgroud)

任何人都可以阐明这种行为.我看到了Mark Pilgrim使用这种__next__方法进入python 3书的一个例子.即使这个例子没有在我的翻译上运行.谢谢你抽出时间来帮助我!

python-2.6

15
推荐指数
1
解决办法
1万
查看次数

Javascript如何避免无限回调调用?

我有以下代码.

HTML

<p id="test">hello</p>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

document.getElementById("test").addEventListener("click", function() {
  console.log("called");
  document.getElementById("test").click();
});

document.getElementById("test").click();
Run Code Online (Sandbox Code Playgroud)

当我运行它时,控制台只打印一次"被叫".我的问题是javascript使用什么机制来避免无限调用回调?

javascript

10
推荐指数
1
解决办法
133
查看次数

Python:为什么我可以将可变对象放入dict或set中?

给出以下示例,

class A(object):
    pass
a = A()
a.x = 1
Run Code Online (Sandbox Code Playgroud)

显然是一个可变的,然后我把一个放入一套,

set([a])
Run Code Online (Sandbox Code Playgroud)

它成功了.为什么我可以将像"a"这样的可变对象放入set/dict中?不应该设置/ dict只允许不可变对象,以便他们可以识别对象并避免重复?

python hash immutability

7
推荐指数
1
解决办法
2333
查看次数

为什么我们需要 Python 中的属性?

我知道使用属性的主要目的之一是用于验证和格式化。例如,我有一个如下所示的 User 类。我希望名字和姓氏在设置时大写。如果我可以编写以下代码来实现相同的格式化结果,为什么还需要属性?

class User:
    def __init__(self, firstname, lastname):
        self.firstname = firstname
        self.lastname = lastname

    def __setattr__(self, attr, value):
        if attr == 'firstname':
            self.__dict__[attr] = value.capitalize()
        elif attr == 'lastname':
            self.__dict__[attr] = value.capitalize()
Run Code Online (Sandbox Code Playgroud)

python

5
推荐指数
1
解决办法
2020
查看次数

我们需要隐藏google oauth客户端ID吗?

大家。我最近正在学习OAuth身份验证。我在玩Google的oauth api。在用于服务器端应用程序的Google登录的教程中,第三步-初始化GoogleAuth对象,您需要提供客户端ID来初始化GoogleAuth对象。我只是想知道我们是否需要对客户端ID保密,因为现在任何人都可以通过查看javascript找出客户端ID是什么。

google-api google-oauth2

3
推荐指数
1
解决办法
1237
查看次数

Knockout,为什么我们需要notifySubscribers的参数?

有时我们需要使用notifySubscribers来强制执行一个observable的订阅者,你可以传递一个param给notifySubscribers,但问题是传递的param既不会改变observable的值,也不会传递给订阅者,那么为什么使用它?我在一些 Knockout 文档中看到,传递了一个参数,例如,在这个. 这是一个jsfiddle 代码片段,它验证了 param 未在任何地方使用的事实。我错过了什么,还是参数确实毫无意义?

jsfiddle html中的代码

<div data-bind="text: $data.content"></div>
Run Code Online (Sandbox Code Playgroud)

javascript

var viewModel = {
    content: ko.observable('original')
};

var cpted = ko.computed(function(){
  alert(viewModel.content());
    return viewModel.content();
});

ko.applyBindings(viewModel);

viewModel.content.notifySubscribers('new value');

alert(viewModel.content());
Run Code Online (Sandbox Code Playgroud)

knockout.js

1
推荐指数
1
解决办法
3131
查看次数