这很可能是以前问过的问题,但我不确定我看到的问题有完全相同的情况
我有一个追踪光线的程序。每条光线都是一个物体,每个镜头都是一个物体。如果,当用户尝试使用该方法通过透镜传播光线时,光线实际上没有通过透镜,我希望程序告诉用户这个事实
伪代码:
class OpticalElement:
...
def propagate_ray(self):
if intersect:
calculate new direction etc
else:
print "Ray %s did not intersect optical element" % (ray)
所以
>> A = Ray(args) # won't intersect lens1
>> B = Ray(different args)
>> lens1 = OpticalElement(args)
>> lens1.propagate_rays(A, B)
'Ray <Ray instance at 0x7688> did not intersect optical element'
当有50条射线被传播时,谁知道是哪条射线呢?我希望它输出什么:
'Ray A did not intersect optical element'
你不能那样做;对象不跟踪引用它们的名称
任何对象都可以有1到无限个名称或引用它们的其他对象,因此如果有多个名称或对象被列表或字典引用,您会选择哪个名称?或者,如果您用
lens1.propagate_rays(Ray(args), Ray(different_args))
将这些对象直接传递到您的方法中呢最好给对象一个name属性,然后在对象的
__repr__
中引用该属性:一个对象可以有许多不同的变量引用它们。你应该给你的对象
name
属性相关问题 更多 >
编程相关推荐