如果您已经在继承一个类,是否有必要将其导入?

时间:2018-07-22 05:07:00

标签: python-3.x pyside

在下面的代码中,该家伙导入了Qwidget类,并且还继承了Sample Window类中的Qwidget类,但是通过继承,我们可以使用Qwidget类的所有功能。那么,为什么他要导入Qwidget类?我是这个主题的新手。很抱歉,这是一个愚蠢的问题。

# Import required modules
import sys, time
from PySide.QtGui import QApplication, QWidget, QIcon    

class SampleWindow(QWidget):
# Constructor function
def __init__(self):
super(SampleWindow, self).__init__()
self.initGUI()
def initGUI(self):
self.setWindowTitle("Icon Sample")
self.setGeometry(300, 300, 200, 150)
# Function to set Icon
appIcon = QIcon('pyside_logo.png')
self.setWindowIcon(appIcon)
self.show()
if __name__ == '__main__':
# Exception Handling
try:
myApp = QApplication(sys.argv)
myWindow = SampleWindow()
myApp.exec_()
sys.exit(0)
except NameError:
print("Name Error:", sys.exc_info()[1])
except SystemExit:
print("Closing Window...")
except Exception:
print(sys.exc_info()[1])

1 个答案:

答案 0 :(得分:0)

父类(parent.py)

class A:
    var_a = 10

子类(child.py)

class B(A):
var_b = 5


b = B()
print(b.var_b)
print(b.var_a)

未导入A时:

output:
Traceback (most recent call last):
   File "child.py", line 1, in <module>
     class B(A):
 NameError: name 'A' is not defined

导入A:

from parent import A


class B(A):
    var_b = 5


    b = B()
    print(b.var_b)
    print(b.var_a)

    #output:
    5
    10

在第二种情况下,仅因为我们从parent.py文件导入了父类A,所以我们才能够访问A类(继承)。 第一种情况给我们带来了未定义的错误,因为类A不在名称空间中。

沿着同一行,如果类A和类B都存在于同一文件中,则我们将能够从类B继承继承的变量,而不会出现未定义的错误,因为类A已经在命名空间中。