当我在Python中创建一个类时,我必须使用以下方法声明变量self.
:
class ClassName(object):
def __init__(self, arg):
super(ClassName, self).__init__()
self.arg = arg
很好,但是要实例化它,我需要将参数传递给init
方法...但是如果我没有它们,或者不想打扰他们怎么办?
我想要类似的东西
def __init__(self):
super(ClassName, self).__init__()
self.arg
...稍后再引用现有但为空的arg
。编辑。现有但空的意思是类似C的行为:
int a;
...a
存在变量但没有值的地方。甚至gcc都将其称为empty,因此我想这个问题将很清楚。
默认值尽可能接近我想要的值,我将使用它。
看来您来自静态语言(Java,C#,C ++),并且难以适应Python。由于Python是动态的,因此您可以随时在类的方法之内和之外从其添加和删除属性。如果没有适当的值,则不要在__init__
中声明它,而在其他方法中声明它,那是完全可以的。
您“现存但为空”的值到底是什么意思?空着意味着什么?在(某些)静态类型的语言中,您未明确初始化的成员值会自动初始化为其默认值(整数初始化为0,指针/引用为null等)。如果您知道合适的默认值,则只需将其初始化arg
为该值即可。如果没有适当的默认值,请转到选项1。
def __init__(self):
self.arg1 = 0
self.arg2 = 'a'
self.arg3 = None
def __init__(self, arg1=0, arg2='a', arg3=None):
self.arg1 = arg1
self.arg2 = arg2
self.arg3 = arg3
class ClassName(object):
@property
def arg1(self):
return self._arg1 if hasattr(self, '_arg1') else 0
@arg1.setter
def arg1(self, value):
self._arg1 = value
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句