2012-12-27 2 views
1

나는 클래스가 : a는 float로 b는 직교 좌표의 위치를 ​​포함하는 튜플파이썬 클래스 인스턴스 산술

class Foo: 
    def __init__(self, a, b): 
     self.a = a 
     self.b = b 

.

a = Foo(1.23, (1, 2))을 예로 들어 보겠습니다. 내가 원하는 무엇

은 그것을 만들 그래서 우리가 a + 4.56 또는 7.89 - a하거나 부동 개체 (a.a)로 a을 평가하는 어떤을 수행합니다.

__add____sub__과 같은 기본 제공 방법을 추가 할 수 있다는 것을 알고 있지만 더 간단한 방법이 있습니까? 하나의 방법으로 기능을 제공하는 것과 마찬가지?

+2

저는 그렇게 생각하지 않습니다. 그렇지 않으면'Foo()'+'Bar()'='Egg()'를 할 수 있습니다. 파이썬은 마술입니다. 육체 노동이 있습니다. '+'는 오버로드되지 않기 때문에 표준 기능을 유지할 것이다. – CppLearner

답변

4

a이 float로되어 있다면 float로 강제 변환하는 것이 좋습니다.

float(a) + 4.56 
+6

이것이 작동하려면'__float__'을 정의해야합니다. 그러나 명시적인 전환이 좋습니다. – delnan

+0

아, 질문을 다시 읽은 후 처음으로 잘못 읽었습니다. –

+1

@SeanLinehan :'float' 메소드에 대한 정의를 추가하면 독자에게 유용합니다. 'float (a)'가 예외를 발생시키기 때문입니다. – Rodrigue