-1

因为我还在学习python,所以我遇到了一个问题。

为什么会这样:

class SomeOtherClass(object):
    def __init__(self):
        self.number = 10
        print(self.number)

    def increase(self):
        self.number += 1
        print(self.number)

class MyMainClass(object):
    def __init__(self):
        self.otherClass = MyClass()

app = MyMainClass() #Output: 10
app.otherclass.increase() #Output: 11

但这不是:

from tkinter import *

class MyMainClass(object):
    def __init__(self):
        self.tk = Tkinter() # <-- Error: see below.

app = MyMainClass()
app.tk.title("My window")
...

两次我都包含一个类,但在第二个示例中它说:

NameError:未定义全局名称“Tkinter”

这些示例之间的区别在哪里,我该如何解决这个问题,所以我可以在课堂上使用 tkinter?

谢谢你的帮助。

4

1 回答 1

5

也许你的意思是Tk()?Python 3.x 上的tkinter模块似乎不包含 class Tkinter

至于您的问题和示例的含义……好吧,示例绝对无关紧要,问题应该只是“为什么我不能创建一个实例Tkinter”之类的。

Python 课程:这也是一个很好的例子,说明为什么使用星号导入是一个坏主意(即from <module> import *,因为*看起来像星号)。这会从 导入所有内容tkinter,但不会让您知道您认为存在的东西实际上是否存在

from tkinter import *

而这

from tkinter import Tkinter

会立即指出(类)Tkinter不存在于tkinter. 有些人似乎更喜欢的另一个选项(在某些情况下包括我自己),import tkinter后面是tkinter.Tk(),它的优点是类的来源很明显。此外,PEP8也不鼓励使用星号导入(将它们称为“通配符导入”)。

于 2013-10-02T15:47:01.983 回答