【发布时间】:2014-06-04 15:46:49
【问题描述】:
我对在 python 中编写 类 不是很熟悉,我正在尝试为我的应用程序修改一个编写的类。问题是我想将halo_pos 参数作为输入提供给以下NFW 类:
class NFW(object):
_req_params = { 'mass' : float , 'conc' : float , 'redshift' : float }
_opt_params = { 'halo_pos' :[float,float] , 'omega_m' : float , 'omega_lam' : float }
_single_params = []
_takes_rng = False
_takes_logger = False
def __init__(self, mass, conc, redshift, halo_pos,
omega_m=None, omega_lam=None, cosmo=None):
self.M = float(mass)
self.c = float(conc)
self.z = float(redshift)
self.halo_pos.x = float(halo_pos[0])
self.halo_pos.y = float(halo_pos[1])
self.cosmo = cosmo
如果我将halo_pos 的输入传递给以下参数
>>> Xpos.value
array(235.0)
>>> type(Xpos.value)
<type 'numpy.ndarray'>
>>> Ypos.value
array(340.0)
omega_matter=0.23;omega_lambda=0.77
然后,当我尝试使用给定的输入调用 NFW 类时,我收到以下错误消息:
nfw = nfw_halo.NFWHalo(mass=M,conc=concentration,redshift=z_halo,halo_pos=[Xpos,Ypos],omega_m=omega_matter,omega_lam=omega_lambda)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "nfw_halo.py", line 156, in __init__
self.halo_pos.x = float(halo_pos[0])
AttributeError: 'NFWHalo' object has no attribute 'halo_pos'
我应该如何为我的班级定义 halo_pos 以避免引发错误消息?
【问题讨论】:
-
你能给我们一个 MWE 吗?
-
@andi 大多数新用户都不知道 MWE 是什么。与新用户一起发帖时避免使用首字母缩略词。
-
对不起,我自己是新手,看到大家都用过。我将来会避免这种情况。感谢您的提示。
-
@andi 为什么类不为 mass 或 conc 参数引发错误消息?
-
因为对于 pos.x 和 pos.y,你期望一个类型有一个 x 和一个 y 分量可以用“.”来寻址。 python 应该如何知道你将要创建什么?
标签: python python-2.7 python-3.x numpy scipy