Python 我可以在def uu init uu中设置未传递到def uu init uu的变量吗?

Python 我可以在def uu init uu中设置未传递到def uu init uu的变量吗?,python,Python,在“def init”中设置未传递给函数的属性可以吗?与下面的代码类似——只传入env。但是我想让类中的函数了解本地的\u gdb和引用的\u数据 类别规格: def __init__(self, env): self.env = env local_gdb = os.path.join(os.path.dirname(os.path.realpath(__file__)), "Clip.gdb") self.local_gdb = local_gdb self.

在“def init”中设置未传递给函数的属性可以吗?与下面的代码类似——只传入env。但是我想让类中的函数了解本地的\u gdb和引用的\u数据

类别规格:

def __init__(self, env):
    self.env = env
    local_gdb = os.path.join(os.path.dirname(os.path.realpath(__file__)), "Clip.gdb")
    self.local_gdb = local_gdb
    self.reference_data = {
        'moa_centerline': {'sde': 'MOAADM.Addressing_DBO_STREETS\MOAADM.streets',
                           'gdb': os.path.join(local_gdb, 'MOA_Streets')},
        'moa_address': {'sde': 'MOAADM.ADDRESS_POINT',
                        'gdb': os.path.join(local_gdb, 'MOA_Address')},
        'kpb_address': {'sde': "KPBADM.PhysicalAddress",
                        'gdb': os.path.join(local_gdb, "KPB_Address")},
    }

我将顶级规范重构为:

local_gdb = os.path.join(os.path.dirname(os.path.realpath(__file__)), "Clip.gdb")
reference_data = {
    'moa_centerline': {'sde': 'MOAADM.Addressing_DBO_STREETS\MOAADM.streets',
                       'gdb': os.path.join(local_gdb, 'MOA_Streets')},
    'moa_address': {'sde': 'MOAADM.ADDRESS_POINT',
                    'gdb': os.path.join(local_gdb, 'MOA_Address')},
    'kpb_address': {'sde': "KPBADM.PhysicalAddress",
                    'gdb': os.path.join(local_gdb, "KPB_Address")},
}

def __init__(self, env):
    self.env = env

为什么不可以呢?代码有效吗?你的意思是
\uuuu init\uuuu
??这些额外的属性对于类的每个实例看起来都是完全相同的-在这种情况下,它们可能属于类主体(从而生成类属性),而不是在每次实例化类时都毫无意义地重新计算它们。谢谢Daniel。是的,很好用。我只是想从一个风格的角度来看。这是公认的模式吗?@John,是的,对不起,我会修正它的