<p>当您对层次结构中最高的类调用<code>super</code>时,它将转到<code>object</code>。<code>object</code>是Python中所有对象的超类。所以<code>super(First, self).__init__(master)</code>将尝试初始化<code>object</code>,而不是初始化任何类。您可以使用<code>Class.__mro__</code>来查看此继承。弄明白我在说什么。你知道吗</p>
<p>从对象继承?默认情况下,即使没有指定任何内容,也会发生这种情况。所以我猜你想从<code>Frame</code>继承,因为<code>object</code>没有任何意义。你知道吗</p>
<p>所以把你的代码改成这个,它应该是固定的。你知道吗</p>
<pre><code>from tkinter import *
import random
class First(Frame): # changed here
def random(self):
self._y = random.randint(11,20)
self._x = random.randint(1,10)
def random2(self):
s = First(root)
s.random()
class Second(First): # changed here
def __init__(self,master):
super(Second, self).__init__(master)
self.grid()
self.menuFrame = Frame(self)
self.create_menu_widgets()
self.menuFrame.grid()
def create_menu_widgets(self):
btnMainMenu = Button(self.menuFrame,font=("consolas",18,"bold"),text="Main Menu")
btnMainMenu.pack()
def print(self):
print(self._y,self._x)
root = Tk()
x = Second(root)
x.random()
x.random2()
x.print()
root.configure(background = 'green') # you cannot see this as your button fills everything
root.mainloop()
</code></pre>