因为我还在学习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?
感谢您的帮助。
答案 0 :(得分:5)
也许你的意思是Tk()
? Python 3.x上的tkinter
模块似乎不包含类Tkinter
。
关于你的问题和例子的意思......好吧,这些例子绝对无关紧要,问题应该只是“为什么我不能创建Tkinter
”的实例或者什么。
Python课程:这也是一个很好的例子,说明为什么使用星级导入是个坏主意(即from <module> import *
,因为*
看起来像一个星星)。这会从tkinter
导入所有内容,但如果您认为其中的内容实际上不是
from tkinter import *
而这
from tkinter import Tkinter
会立即指出Tkinter
中不存在(类)tkinter
。有些人似乎更喜欢的另一种选择(在某些情况下包括我自己),import tkinter
后跟tkinter.Tk()
,这样做的好处就是类很明显。此外,PEP8也不鼓励使用星级导入(将其称为“通配符导入”)。