我正在编写一系列文本菜单。使用下面的类和子类,它运行没有问题。但我正在审查我的编码,我想知道....我没有在类中使用def__init__(self)可以吗?我是否应该将数据成员放在def__init__(Self):中,例如self.images=()、self.options=()?如果我这样做了,我就不能使用abc模块进行约束,对吗?classBaseMenu(object):__metaclass__=abc.ABCMeta@abc.abstractpropertydefoptions(self):pass@abc.abstractpropertydefmenu_name(se
我想在一个类中定义一组常量,例如:classFoo(object):(NONEXISTING,VAGUE,CONFIRMED)=(0,1,2)def__init__(self):self.status=VAGUE但是,我明白了NameError:globalname'VAGUE'isnotdefined有没有一种方法可以将这些常量定义为在类中可见,而无需使用global或self.NONEXISTING=0等? 最佳答案 当您在类主体中分配名称时,您正在创建类的属性。如果不直接或间接地引用类,就不能引用它们。您可以像其他答案所说的那
只是好奇,在构建类时使用len()或def__len__()有什么区别(优点和缺点)?哪种Python风格最好?classfoo(object):def__init__(self,obs=[])self.data=obsself.max=max(obs)self.min=min(obs)self.len=len(obs)或classfoo(object):def__init__(self,obs=[])self.data=obsself.max=max(obs)self.min=min(obs)def__len__(self):returnlen(self.data)
所以我刚开始用python编程,我不明白“self”背后的全部原因。我知道它几乎就像一个全局变量一样使用,因此可以在类中的不同方法之间传递数据。我不明白为什么在同一个类中调用另一个方法时需要使用它。如果我已经在那个类,我为什么要告诉它??例如,如果我有:为什么我需要self.thing()?classbla:defhello(self):self.thing()defthing(self):print"hello" 最佳答案 你也可以在类static中创建方法,所以不需要self。但是,如果您确实需要,请使用它。你的:classbl
我正在编写测试,我听说有人说要使用self.assertFalse而不是assertFalse.为什么会这样,有什么好处吗? 最佳答案 如果你跑了importunittestclassTest_Unittest(unittest.TestCase):deftest_assert(self):assertFalsedeftest_assertFalse(self):self.assertFalse(True)if__name__=='__main__':unittest.main()你得到同样的日志信息,同样的失败:FF=======
我想用这样的方法中的另一个实例替换一个对象实例:classA:defmethod1(self):self=func(self)从数据库中检索对象。 最佳答案 替换'self'变量不太可能完成您尝试做的任何事情,这不能仅通过将func(self)的结果存储在不同的变量中来完成。“self”实际上是一个仅在方法调用期间定义的局部变量,用于传递正在操作的类的实例。替换self实际上不会替换对其他对象持有的类的原始实例的引用,也不会创建对分配给它的新实例的持久引用。 关于python-在方法中用
我正在浏览一些代码,我注意到一行引起了我的注意。代码类似于下面的例子classMyClass:def__init__(self):passdefcall_me(self=''):print(self)这看起来像我见过的任何其他类,但是str作为self的默认值传入。如果我打印出self,它的行为正常>>>MyClass().call_me()这一直困扰着我,我无法弄清楚为什么要使用它。str实例会作为self的默认值传入有什么原因吗? 最佳答案 不是真的,这只是一种奇怪的方式,使它在通过类调用时不会引发错误:MyClass.call
这个问题在这里已经有了答案:Howtopassadefaultargumentvalueofaninstancemembertoamethod?(6个回答)关闭4年前.defsave_file(self,outputfilename=self.image_filename):self.file.read(outputfilename)....在第一行给出NameError:name'self'isnotdefined。似乎Python不接受它。如何重写代码使其不会引发异常? 最佳答案 使用默认的None并检测它。defsave_fi
关闭。这个问题需要更多focused.它目前不接受答案。想要改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭5年前。Improvethisquestion我只是将一个工作程序重写为一个类中的函数,一切都搞砸了。首先,在类的__init__部分,我用self.variable=something声明了一堆变量。我应该能够通过在该函数中使用self.variable来访问/修改类的每个函数中的这些变量吗?也就是说,通过声明self.variable我已经把这些变量,类的范围内的全局变量都做了吧?如果没有,我该如何处理自己?其次,如何正确地向类传递参数?第三,
这个问题在这里已经有了答案:UnboundLocalErroronlocalvariablewhenreassignedafterfirstuse(13个回答)Usingglobalvariablesinafunction(24个回答)关闭8年前。我正在努力解决这个问题:c=1deff(n):printc+ndefg(n):c=c+nf(1)#=>2g(1)#=>UnboundLocalError:localvariable'c'referencedbeforeassignment谢谢! 最佳答案 在函数中,分配给的变量默认被视为局