예를 들어 쿼터니온 수학 (https://en.wikipedia.org/wiki/Quaternion)을 고려하십시오.간단한 구문으로 생성 될 클래스를 만들 수 있습니까?
분명히 나는 하나
a = 1 + 2j
type(a)
# complex or <class 'complex'> depending if ipython or python
를 사용하여 기본
complex
데이터 형식이 훨씬 더 좋은 방법으로 정의 될 수 있다는 것을 알아 차리지 도움이되지 수 있습니다, 그러나
a = quaternion(1, 2, 3, 4)
print(a)
# 1 + 2i + 3j + 4k
하여 새로운 사원 수를 정의하는 클래스를 구축 할 수 있습니다
1 + 2j
구문은 어떻게 든 내장 클래스 개체 complex (1,2)를 만들기 위해 캡처됩니다.
그래도 동일한 작업을 수행 할 수 있습니까? a = 1 + 2i + 3j + 4k
과 같은 간단한 직접 구문을 캡처하고 내 complex
의 작동 방식과 비슷한 방식으로이 코드를 내 으로 변환 할 수 있습니까?
'j '접미사는 파이썬의 언어 구문의 일부입니다. 그래서 당신이 핵심 파이썬을 확장한다고 생각하지 않는다면, 유일하게 실제적인 방법은'Quaternion' 클래스가 문자열을 받아들이고 그것을 적절하게 파싱하는 것입니다. [sympy] (http://docs.sympy.org/dev /index.html)를 사용하십시오. –
@JonClements - 좋은 지적. 그러나 우리가 j를 안전한 키로 대체한다면, 아직 파이썬에서 사용하지 않을 수 있습니까? '1 + 2i + 3h + 4k'? 이러한 구문을 캡처하는 것이 원칙적으로 가능한지 이해하려고 노력 중입니다 ... – Aguy
아니요 - 파이썬이 구문 정의에 따라 코드를 구문 분석 할 때 'SyntaxError'가 발생합니다.핵심 파이썬을 수정하지 않고 그것을 수행하는 유일한 방법은 문자열을 가져 와서 직접 파싱하는 것입니다. –