当我在Python中创建一个类时,我必须使用以下内容声明变量self.:
class ClassName(object):
def __init__(self, arg):
super(ClassName, self).__init__()
self.arg = arg
Run Code Online (Sandbox Code Playgroud)
很好,但要实例化它,我需要将参数传递给init方法......但如果我没有它们,或者不想打扰它们怎么办?
我想要类似的东西
def __init__(self):
super(ClassName, self).__init__()
self.arg
Run Code Online (Sandbox Code Playgroud)
......以后再提到现有但空洞的arg.编辑.通过现有但空的我意味着类似C的行为:
int a;
Run Code Online (Sandbox Code Playgroud)
......变量a存在但没有价值.即使是gcc也认为它是空的,所以我认为这个问题很清楚.
默认值尽可能接近我想要的,我将使用它.
Pau*_*nta 11
您似乎来自静态语言(Java,C#,C++),并且您很难适应Python.由于Python是动态的,因此您可以随时在类的方法内外添加和删除属性.如果你没有适当的值,你没有声明它__init__,用其他方法声明,那就完全没问题了.
你对"现有但空洞"的价值究竟是什么意思?空虚是什么意思?在(某些)静态类型语言中,未显式初始化的成员值会自动初始化为其默认值(整数初始化为0,指针/引用为null等).如果您知道适当的默认值,只需将您的arg值初始化为该值; 如果没有适当的默认值,请转到选项1.
def __init__(self):
self.arg1 = 0
self.arg2 = 'a'
self.arg3 = None
Run Code Online (Sandbox Code Playgroud)
def __init__(self, arg1=0, arg2='a', arg3=None):
self.arg1 = arg1
self.arg2 = arg2
self.arg3 = arg3
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4393 次 |
| 最近记录: |