我对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年代中
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年代中
使用DjangoREST框架,标准ModelSerializer将允许通过将ID作为整数发布来分配或更改ForeignKey模型关系。从嵌套序列化程序中获得这种行为的最简单方法是什么?注意,我只是在谈论分配现有的数据库对象,不是嵌套创建。我过去在序列化程序中使用额外的“id”字段以及自定义create和update方法解决了这个问题,但这看起来很简单我很想知道最好的方法。classChild(models.Model):name=CharField(max_length=20)classParent(models.Model):name=CharField(max_length=20)
使用DjangoREST框架,标准ModelSerializer将允许通过将ID作为整数发布来分配或更改ForeignKey模型关系。从嵌套序列化程序中获得这种行为的最简单方法是什么?注意,我只是在谈论分配现有的数据库对象,不是嵌套创建。我过去在序列化程序中使用额外的“id”字段以及自定义create和update方法解决了这个问题,但这看起来很简单我很想知道最好的方法。classChild(models.Model):name=CharField(max_length=20)classParent(models.Model):name=CharField(max_length=20)
在Python中,我收到以下错误:UnboundLocalError:localvariable'total'referencedbeforeassignment在文件的开头(在产生错误的函数之前),我使用global关键字声明了total。然后,在程序的主体中,在调用使用total的函数之前,我将其分配为0。我尝试在不同的地方将其设置为0(包括文件顶部,就在它被声明之后),但我无法让它工作。有人看到我做错了吗? 最佳答案 我认为您错误地使用了“全局”。见Pythonreference.您应该声明不带全局变量的变量,然后在要访问全局
在Python中,我收到以下错误:UnboundLocalError:localvariable'total'referencedbeforeassignment在文件的开头(在产生错误的函数之前),我使用global关键字声明了total。然后,在程序的主体中,在调用使用total的函数之前,我将其分配为0。我尝试在不同的地方将其设置为0(包括文件顶部,就在它被声明之后),但我无法让它工作。有人看到我做错了吗? 最佳答案 我认为您错误地使用了“全局”。见Pythonreference.您应该声明不带全局变量的变量,然后在要访问全局
在unittest的setUp()方法中,我设置了一些self变量,稍后在实际测试中会引用这些变量。我还创建了一个装饰器来做一些日志记录。有没有一种方法可以让我从装饰器中访问那些self变量?为简单起见,我发布此代码:defdecorator(func):def_decorator(*args,**kwargs):#accessafromTestSamplefunc(*args,**kwargs)return_decoratorclassTestSample(unittest.TestCase):defsetUp(self):self.a=10deftearDown(self):#te