python-3.x - 如果您已经继承了一个类,是否有必要导入它?
问题描述
在下面的代码中,这家伙导入了 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])
解决方案
父类(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
在第二种情况下,我们能够访问类 A(它是继承的)只是因为我们从 parent.py 文件中导入了父类 A。第一种情况给了我们未定义的错误,因为类 A 不在名称空间中。
同样,如果类 A 和 B 都存在于同一个文件中,我们将能够访问从 B 继承的变量而不会出现未定义的错误,因为 A 已经在命名空间中。
推荐阅读
- angular - 使用组件中的@Input 指令打开模态后获取对象
- vue.js - 指令 v-focus 在一个输入上,为什么输入字段的其余部分无法在 vue js 中正确输入
- r - 在ggplot循环R中标记前10%的值
- python - 无法将元组列表 [('1',), ('2',), ('3',)] 转换为列表 ['1', '2', '3']?
- git - 如何使用本地文件快捷方式 git clone
- ansible - group_vars/all/ 目录中的文件是什么?
- python - 干净地退出python3函数而不离开repl
- kubernetes - 如何在 Kubernetes 集群级别查找可用资源?
- spring-boot - 在 Thymeleaf 中访问 @Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
- c - 可变参数宏扩展出错了