在Python中将类导入另一个类

时间:2013-10-02 15:42:30

标签: python python-3.x import tkinter

因为我还在学习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?

感谢您的帮助。

1 个答案:

答案 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也不鼓励使用星级导入(将其称为“通配符导入”)。