Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 类uuu init_uuuu()正好接受2个参数(给定1个)_Python_Class_Oop - Fatal编程技术网

Python 类uuu init_uuuu()正好接受2个参数(给定1个)

Python 类uuu init_uuuu()正好接受2个参数(给定1个),python,class,oop,Python,Class,Oop,我正在学习Python中的类。运行两个示例时,两个函数都有2个参数(给出了其中1个),但是,只有一个示例执行,而另一个不执行 即使x.setdata()只有1个参数,此参数也会执行。 头等舱: def设置数据(自身、值): self.data=值 def显示(自): 打印(自我数据) 这一个没有运行,错误msg:\uuuuu init\uuuuu()正好接受2个参数(给定1个): 类堆: def uuu init uuuu(自,排序键): “”“初始化堆的新实例。 Args: 排序键:指定插入对

我正在学习Python中的类。运行两个示例时,两个函数都有2个参数(给出了其中1个),但是,只有一个示例执行,而另一个不执行

即使
x.setdata()
只有1个参数,此参数也会执行。 头等舱: def设置数据(自身、值): self.data=值 def显示(自): 打印(自我数据)

这一个没有运行,错误
msg:\uuuuu init\uuuuu()正好接受2个参数(给定1个)

类堆:
def uuu init uuuu(自,排序键):
“”“初始化堆的新实例。
Args:
排序键:指定插入对象的属性
进入堆中,并在此基础上创建堆。
"""
self.heap=list()
self.mapping=dict()
self.sorting\u key=排序\u key
def heapify_up(自我、孩子):
“”“标准heapify操作,如CLRS中所述。
其工作原理是在堆中的索引子级原始交换元素
直到满足heap属性为止。修改
适当的堆属性
Args:
子级:违反heap属性的元素的索引
返回:
没有一个
"""
父项=(子项-1)/2
#将最初位于索引子级的元素与其父级交换
#直到父级的指定属性的值更大
#而不是元素本身的指定属性的值
while(getattr(self.heap[parent],self.sorting\u键)<
getattr(self.heap[child],self.sorting_key)):
如果(父项==-1):
#这意味着child为0,这意味着我们已到达
#最重要的
返回
#交换映射,以确保将来的引用
#映射dict指的是对象在中的正确位置
#堆
self.mapping[self.heap[parent].player]=child
self.mapping[self.heap[child].player]=父
#交换父对象和子对象
temp=self.heap[parent]
self.heap[parent]=self.heap[child]
self.heap[child]=temp
#将子指针和父指针向上移动到堆中
子=父
父项=(子项-1)/2
x=堆()
x、 初始值([42,32,54,1,3])
x、 heapify_up(l,5)
打印x
这两行:

x=Heap()
x.__init__([42,32,54,1,3])
应该是一个:

x=Heap([42,32,54,1,3])
请记住,执行
Heap()
时,会隐式调用
Heap.\uuuu init\uuuu
。下面是一个演示:

>>> class Foo:
...     def __init__(self):
...         print("Foo.__init__ was called")
...
>>> Foo()
Foo.__init__ was called
<__main__.Foo object at 0x020AF030>
>>>
>>类Foo:
...     定义初始化(自):
...         打印(“Foo.\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
...
>>>Foo()
Foo.\uuuuu init\uuuuuuuu被调用
>>>

“self是x?”-是的,
self
在那行中是
x
。这应该在每个Python
教程中解释。谢谢!!是的,我知道赛尔夫是x,但不知道怎么叫全班同学。如果你介意帮我的话,我有一个后续问题。对于Heap类,我尝试调用heapify_up函数。(该函数将最初在索引子级处的值与其父级进行比较,并在违反堆属性时交换这两个值),但出现错误mesg“列表索引超出范围”。我是否调用了错误的函数?谢谢x=堆([8,4,6,5,7,3,2])x.heapify_up(5)#违反堆属性print x.sorting_key的子级索引
x=Heap([42,32,54,1,3])
>>> class Foo:
...     def __init__(self):
...         print("Foo.__init__ was called")
...
>>> Foo()
Foo.__init__ was called
<__main__.Foo object at 0x020AF030>
>>>