这个问题在这里已经有了答案:Whatisthepurposeofthe`self`parameter?Whyisitneeded?(26个回答)关闭2个月前。在Python中(在同一模块内)引用成员函数时是否应该使用self?更一般地说,我想知道何时需要使用self,不仅用于方法,还用于变量。 最佳答案 添加答案,因为Oskarbi的答案不明确。您在以下情况下使用self:定义实例方法。当您在实例上调用方法时,它会自Action为第一个参数传递,并且它是调用该方法的实例。从实例方法内部引用类或实例属性。当您想从该方法内部调用方法或访
我有一个类A,它被一堆其他类继承。其中一些具有一些相似的函数,最好将这些函数定义在其他地方并由需要它们的类调用。但是这些函数调用父类(superclass)中定义的函数。classA():defimp_func(*args):#calledbythechildclassfunctionsClassB(A):defcommon_func(self):#somestuffself.imp_func(*args)所以我创建了我的辅助函数,它以self对象作为参数,我可以从辅助函数内部调用imp_func。defhelper_func(obj,some_args):#somecommonstu
我有一个类A,它被一堆其他类继承。其中一些具有一些相似的函数,最好将这些函数定义在其他地方并由需要它们的类调用。但是这些函数调用父类(superclass)中定义的函数。classA():defimp_func(*args):#calledbythechildclassfunctionsClassB(A):defcommon_func(self):#somestuffself.imp_func(*args)所以我创建了我的辅助函数,它以self对象作为参数,我可以从辅助函数内部调用imp_func。defhelper_func(obj,some_args):#somecommonstu
这个问题在这里已经有了答案:Whatisthepurposeofthe`self`parameter?Whyisitneeded?(26个回答)关闭6年前。我对OOP术语和概念几乎一无所知。我从概念上知道对象是什么,并且对象具有方法。我什至明白在python中,类是对象!不错,就是不知道什么意思它没有点击我。我目前正在尝试了解一些我认为可以阐明我对python的理解的详细答案:Whatdoesthe"yield"keyworddoinPython?WhatisametaclassinPython?在第一个答案中,作者以如下代码为例:>>>classBank():#let'screate
这个问题在这里已经有了答案:Whatisthepurposeofthe`self`parameter?Whyisitneeded?(26个回答)关闭6年前。我对OOP术语和概念几乎一无所知。我从概念上知道对象是什么,并且对象具有方法。我什至明白在python中,类是对象!不错,就是不知道什么意思它没有点击我。我目前正在尝试了解一些我认为可以阐明我对python的理解的详细答案:Whatdoesthe"yield"keyworddoinPython?WhatisametaclassinPython?在第一个答案中,作者以如下代码为例:>>>classBank():#let'screate
我对python还很陌生,并注意到这些帖子:Python__init__andselfwhatdotheydo?和PythonClasseswithoutusingdef__init__(self)然而,在玩弄它之后,我注意到这两个类给出了明显相同的结果-classA(object):def__init__(self):self.x='Hello'defmethod_a(self,foo):printself.x+''+foo(来自thisquestion)和classB(object):x='Hello'defmethod_b(self,foo):printself.x+''+foo
我对python还很陌生,并注意到这些帖子:Python__init__andselfwhatdotheydo?和PythonClasseswithoutusingdef__init__(self)然而,在玩弄它之后,我注意到这两个类给出了明显相同的结果-classA(object):def__init__(self):self.x='Hello'defmethod_a(self,foo):printself.x+''+foo(来自thisquestion)和classB(object):x='Hello'defmethod_b(self,foo):printself.x+''+foo
这个问题在这里已经有了答案:Howtoavoidinfiniterecursionwithsuper()?(1个回答)关闭7年前。我最近发现(通过StackOverflow)调用基类中的方法我应该调用:super([[派生类]],self).[[基类方法]]()没关系,它有效。但是,当我进行更改时,我发现自己经常在类之间复制和粘贴,并且经常忘记将派生类参数修复为super()函数。我想避免必须记住更改派生类参数。我可以改用self.__class__作为super()函数的第一个参数吗?这似乎行得通,但我有充分的理由不应该这样做吗? 最佳答案
这个问题在这里已经有了答案:Howtoavoidinfiniterecursionwithsuper()?(1个回答)关闭7年前。我最近发现(通过StackOverflow)调用基类中的方法我应该调用:super([[派生类]],self).[[基类方法]]()没关系,它有效。但是,当我进行更改时,我发现自己经常在类之间复制和粘贴,并且经常忘记将派生类参数修复为super()函数。我想避免必须记住更改派生类参数。我可以改用self.__class__作为super()函数的第一个参数吗?这似乎行得通,但我有充分的理由不应该这样做吗? 最佳答案
Python是我最了解的语言,但奇怪的是我仍然不知道为什么我输入的是“self”而不是Java或PHP中的“this”。我知道Python比Java更老,但我不知道这是从哪里来的。特别是因为您可以使用任何名称而不是“self”:该程序可以正常工作。那么这个约定从何而来? 最佳答案 Xerox于1980年发布的Smalltalk-80使用了self。Objective-C(1980年代初期)在C上叠加Smalltalk功能,因此它也使用self。Modula-3(1988年)、Python(1980年代后期)和Ruby(1990年代中