이 같은 상황을 피하기 위해 기원과 속성의 생성을 피 :이 보이는 동안파이썬 객체 - 알 수없는 이름
class StrictObject(object):
def __setattr__(self, item, value):
if item in dir(self):
object.__setattr__(self, item, value)
else:
raise AttributeError("Attribute " + item + " does not exist.")
:
>>> class Point:
x = 0
y = 0
>>> a = Point()
>>> a.X = 4 #whoops, typo creates new attribute capital x
는 내가 슈퍼 클래스로 사용되는 다음과 같은 객체를 생성 , 파이썬
documentation says of dir()
를 해결하려면 다음
참고 :을하기 때문에은 주로 대화 형 프롬프트에서 사용하기 편리하도록 제공되며 엄격하게 정의되거나 일관되게 정의 된 이름 집합을 제공하기보다는 흥미로운 이름 집합을 제공하려고 시도하며 자세한 동작은 릴리스간에 변경 될 수 있습니다. 예를 들어, 인수가 클래스 인 경우 메타 클래스 속성은 결과 목록에 없습니다.
개체에 특성이 있는지 확인하는 더 좋은 방법이 있습니까?
'__slots__ '은 내부 최적화도 허용하는 것으로 보입니다. –
'__slots__'에 대한 또 다른 깔끔한 사용 – smci