NameError:函数具有kwargs时,未定义名称“ self”

时间:2019-01-29 09:44:47

标签: python class

我以通常的方式创建一个类:

class Star():
    def __init__(self, 
                 x=None, dx=None,
                 y=None, dy=None,
                 z=None, dz=None,
                 vx=None, dvx=None,
                 vy=None, dvy=None,
                 vz=None, dvz=None,
                 orbital_elements=None,
                 number_of_trails=10000, 
                 prior="uniform", 
                 a_max=None,
                 reject_zmax=False):


        self.x, self.y, self.z, self.vx, self.vy, self.vz = x, y, z, vx, vy, vz
        self.orbital_elements = orbital_elements


    def get_zmax(self):
        print("function 1")

    def get_uniform_acceleration_prior(self, extended_mass_model=None, a_max=None, plot_z_hist=False, number_of_trails=self.number_of_trails):
        print("function 2")

当我导入模块时会引发以下异常:

在[1]中:导入测试 NameError:名称“ self”未定义

当我从函数get_uniform_acceleration_prior()中删除kwarg时,可以导入该类而不会出现任何错误。

 class Star():
    def __init__(self, 
                 x=None, dx=None,
                 y=None, dy=None,
                 z=None, dz=None,
                 vx=None, dvx=None,
                 vy=None, dvy=None,
                 vz=None, dvz=None,
                 orbital_elements=None,
                 number_of_trails=10000, 
                 prior="uniform", 
                 a_max=None,
                 reject_zmax=False):


        self.x, self.y, self.z, self.vx, self.vy, self.vz = x, y, z, vx, vy, vz
        self.orbital_elements = orbital_elements

    def get_zmax(self):
        print("function 1")

    def get_uniform_acceleration_prior(self):#, extended_mass_model=None, a_max=None, plot_z_hist=False, number_of_trails=self.number_of_trails):
        print("function 2")



In [2]: import test

In [3]: 

那是为什么?

0 个答案:

没有答案