相关疑难解决方法(0)

使用__init __()方法理解Python super()

我正在努力了解它的用法super().从它的外观来看,可以创建两个子类,就好了.

我很想知道以下2个孩子班级之间的实际差异.

class Base(object):
    def __init__(self):
        print "Base created"

class ChildA(Base):
    def __init__(self):
        Base.__init__(self)

class ChildB(Base):
    def __init__(self):
        super(ChildB, self).__init__()

ChildA() 
ChildB()
Run Code Online (Sandbox Code Playgroud)

python oop inheritance class super

2366
推荐指数
7
解决办法
158万
查看次数

为什么Python 3.x的超级()魔术?

在Python 3.x中,super()可以不带参数调用:

class A(object):
    def x(self):
         print("Hey now")

class B(A):
    def x(self):
        super().x()
Run Code Online (Sandbox Code Playgroud)
>>> B().x()
Hey now
Run Code Online (Sandbox Code Playgroud)

为了使这项工作,一些编译时间魔法进行,其中的一个后果是,下面的代码(重新绑定supersuper_)失败:

super_ = super

class A(object):
    def x(self):
        print("No flipping")

class B(A):
    def x(self):
        super_().x()
Run Code Online (Sandbox Code Playgroud)
>>> B().x()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in x
RuntimeError: super(): __class__ cell not found
Run Code Online (Sandbox Code Playgroud)

super()如果没有编译器的帮助,为什么无法在运行时解析超类?是否存在这种行为或其潜在原因可能会让一个不知情的程序员陷入困境的实际情况?

...并且,作为一个附带问题:在Python中是否有任何其他函数,方法等示例可以通过将它们重新绑定到不同的名称来打破?

python super python-3.x

153
推荐指数
1
解决办法
4万
查看次数

使用__init__ for PyQt4的不同方法

所以......我正在尝试使用PyQt4从基本的Python转向一些GUI编程.我正在看几本不同的书籍和教程,他们每个人似乎都有一种稍微不同的方式来推动课程定义.

一个教程从这样的类开始:

class Example(QtGui.QDialog):
    def __init__(self):
        super(Example, self).__init__()
Run Code Online (Sandbox Code Playgroud)

另一本书是这样的:

class Example(QtGui.QDialog):
    def __init__(self, parent=None):
        super(Example, self).__init__(parent)
Run Code Online (Sandbox Code Playgroud)

而另一个是这样做的:

class Example(QtGui.QDialog):
    def__init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
Run Code Online (Sandbox Code Playgroud)

我仍然在试图总结我的脑海围绕类和OOP和super()所有......我在想,在第三个例子中的最后一行完成或多或少同样的事情,使用呼叫纠正super()在前面的,通过明确直接调用基类?对于这些相对简单的例子,即单一继承,是否有任何真正的好处或理由使用单向与另一种方式?最后......第二个例子parent作为一个参数传递,super()而第一个例子没有...任何关于为什么/何时/哪里合适的猜测/解释?

python pyqt super pyqt4

7
推荐指数
1
解决办法
3630
查看次数

标签 统计

python ×3

super ×3

class ×1

inheritance ×1

oop ×1

pyqt ×1

pyqt4 ×1

python-3.x ×1