这个python方法如何调用工作?

时间:2014-05-21 23:02:20

标签: python python-2.7 methods

class Grid(QFrame):

    def generate(self):

        self.pen = False
        self.tgDig = False
        self.rwDig = False

我不确定这是如何运作的。

generate方法定义为self作为参数,我知道所有方法都必须有一个特殊的第一个参数,通常称为self,但我不明白{ {1}}会调用selfpentgDig,因为它们在其他任何地方都不存在?

如果有帮助的话,它正在使用PyQt QFrame。

3 个答案:

答案 0 :(得分:0)

self引用拥有方法generate的对象,它看起来像pentgDig,而rwDig也是同一个成员继承(等等)的类或其父类。

this可能有用。

答案 1 :(得分:0)

Python中类的所有方法都有第一个参数self,它是对象本身的引用。与Java或C ++中的this类似。因此,在您的示例中,三个变量是类的成员,您可以使用self访问它。

在您的具体示例中,您没有在类中看到变量,因为它们是从另一个类(QFrame)继承的。要从另一个类继承的类的语法是class MyClass(ParentClass)

答案 2 :(得分:0)

如果您运行示例,则会看到method resolution orderbaseGrid继承其属性和方法。

import sys
app = QApplication(sys.argv)#
from PyQt4.QtGui import QFrame,QApplication   
class Grid(QFrame):

    def generate(self):

        self.pen = False
        self.tgDig = False
        self.rwDig = False

import inspect
print inspect.getmro(Grid)
print(Grid.__bases__)