相关疑难解决方法(0)

"yield"关键字有什么作用?

yieldPython中关键字的用途是什么?它有什么作用?

例如,我试图理解这段代码1:

def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild  
Run Code Online (Sandbox Code Playgroud)

这是来电者:

result, candidates = [], [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
    candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
return result
Run Code Online (Sandbox Code Playgroud)

_get_child_candidates调用该方法时会发生什么?列表是否返回?单个元素?它又被召唤了吗?后续通话何时停止?


1.代码来自Jochen Schulz(jrschulz),他为度量空间创建了一个很棒的Python库.这是完整源代码的链接:模块mspace.

python iterator yield generator coroutine

9664
推荐指数
46
解决办法
212万
查看次数

5409
推荐指数
22
解决办法
75万
查看次数

自我的目的是什么?

selfPython 中这个词的目的是什么?我理解它指的是从该类创建的特定对象,但我不明白为什么它明确需要作为参数添加到每个函数.为了说明,在Ruby中我可以这样做:

class myClass
    def myFunc(name)
        @name = name
    end
end
Run Code Online (Sandbox Code Playgroud)

我很容易理解.但是在Python中我需要包括self:

class myClass:
    def myFunc(self, name):
        self.name = name
Run Code Online (Sandbox Code Playgroud)

谁能跟我说说这个?这不是我在(无可否认的有限)经历中遇到的事情.

python oop class self

1061
推荐指数
17
解决办法
81万
查看次数

Python - 为什么在课堂上使用"self"?

这两个班级有何不同?

class A():
    x=3

class B():
    def __init__(self):
        self.x=3
Run Code Online (Sandbox Code Playgroud)

有什么显着差异吗?

python oop

80
推荐指数
4
解决办法
5万
查看次数

类变量:"类列表"vs"类布尔"

我不明白以下示例中的区别.有一次类的一个实例可以改变另一个实例的类变量,而另一个实例却不能?

例1:

class MyClass(object):
    mylist = []

    def add(self):
        self.mylist.append(1)

x = MyClass()
y = MyClass()
x.add()
print "x's mylist: ",x.mylist
print "y's mylist: ",y.mylist
Run Code Online (Sandbox Code Playgroud)

输出:

x的mylist:[1]

你的mylist:[1]

因此,这里的实例xA是能够访问和修改类属性mylist,这也是该实例的属性yA.

例2:

class MyBank(object):
    crisis = False

    def bankrupt(self) :
        self.crisis = True

bankX = MyBank()
bankY = MyBank()
bankX.bankrupt()
print "bankX's crisis: ",bankX.crisis
print "bankY's crisis: ",bankY.crisis
Run Code Online (Sandbox Code Playgroud)

bankX的危机:是的

bankY的危机:错误

为什么这个例子不起作用?

python instance-variables

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

Python:为什么两个实例使用相同的列表?

class Number():
    list = []

number = Number()
number.list.append(0)
print number.list  # [0]

newNumber = Number()
newNumber.list.append(1)
print newNumber.list  # [0,1]
Run Code Online (Sandbox Code Playgroud)

我创建了两个实例,为什么newNumber.list对象有0?为什么number和newNumber使用相同的列表?有人可以帮帮我吗?为什么'i'在后面没有变化?

class Number:
i = 0

number = Number()
number.i = 1
print number.i  # 1

newNumber = Number()
print newNumber.i  # 0
Run Code Online (Sandbox Code Playgroud)

python class list

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