我正在學習Python中的類。運行兩個示例,兩個函數都有兩個參數(其中一個是給定的),但是,只有一個示例執行,但另一個不執行。class __init __()只需要2個參數(1給出)
儘管x.setdata()
只有1個參數,但它仍會執行。 類的Firstclass: DEF使用setData(個體,值): self.data =值 高清顯示器(自): 打印(self.data)
#make two instances
x=FirstClass()
y=FirstClass()
x.setdata("king arthur") #call methods: self is x??
y.setdata(3.31212)
x.display()
y.display()
這一個不運行,錯誤msg: __init__() takes exactly 2 arguments (1 given)
:
class Heap:
def __init__(self, sorting_key):
"""Initializes a new instance of a heap.
Args:
sorting_key: Specifies the attribute of the object inserted
into the heap, on the basis of which the heap was created.
"""
self.heap = list()
self.mapping = dict()
self.sorting_key = sorting_key
def heapify_up(self, child):
"""Standard heapify operation, as described in CLRS.
Works by swapping the element originially at index child in the heap
with its parent until the heap property is satisfied. Modifies the
appropriate heap attribute
Args:
child: Index of the element that violates the heap property
Returns:
None
"""
parent = (child - 1)/2
# Swaps the element originally at the index child with its parent
# until the value of the specifed attribute of the parent is greater
# than the value of the specified attribute of the element itself
while (getattr(self.heap[parent], self.sorting_key) <
getattr(self.heap[child], self.sorting_key)):
if (parent == -1):
# This means child was 0, which means we have reached the
# top of the heap
return
# Swap the mappings as well to ensure that future references in
# the mapping dict refer to the correct position of the object in
# the heap
self.mapping[self.heap[parent].player] = child
self.mapping[self.heap[child].player] = parent
# Swap the parent and the child
temp = self.heap[parent]
self.heap[parent] = self.heap[child]
self.heap[child] = temp
# Move the child and parent pointers up the heap
child = parent
parent = (child - 1)/2
x=Heap()
x.__init__([42,32,54,1,3])
x.heapify_up(l,5)
print x
「self is x?」 - 是的,'self'在該行中是'x'。這應該在每個Python'class'教程中解釋。 – BartoszKP