1
설명자를 사용하여 numpy 배열을 사용합니다. 이 잘 작동하지만 지금 클래스의 특성이 Spectrum
인스턴스가 있는지 여부를 찾고 싶습니다. 내 생각은 obj.__dict__
을 확인하고 isinstance(obj, Spectrum)
을 사용했지만 Spectrum.__get__
은 배열을 반환하므로 isinstance(obj, Spectrum)
이 실패합니다. 이 문제를 해결할 방법이 있습니까?설명자 클래스에 액세스하기
class Spectrum(object):
"""Class capable of containing spectral values."""
def __init__(self, name, dtype='float64'):
self.name = name
def __get__(self, instance, cls):
if instance is None:
return self
else:
print instance.__dict__
return instance.__dict__[self.name]
def __set__(self, instance, value):
if not isinstance(value, np.ndarray):
raise TypeError('Expected an ndarray')
instance.__dict__[self.name] = value
def __delete__(self, instance):
del instance.__dict__[self.name]
class Material(object):
loss_factor = Spectrum(name='loss_factor', dtype='Float64')
def __init__(self):
self.loss_factor = np.array([1, 2, 3])
def main():
obj = Material()
print isinstance(obj.loss_factor, Spectrum)