2017-09-03 9 views
5

मैं sympy में एक कार्यक्षमता की तलाश करता हूं जो आवश्यक होने पर प्रतीकों को विवरण प्रदान कर सकता है। यहsympy में प्रतीकों के विवरण जोड़ने के लिए संभव है?

>>> x = symbols('x') 
>>> x.description.set('Distance (m)') 
>>> t = symbols('t') 
>>> t.description.set('Time (s)') 
>>> x.description() 
'Distance (m)' 
>>> t.description() 
'Time (s)' 

की तर्ज पर कुछ है क्योंकि यह मुझे मेरे सभी चर का ट्रैक रखने और पता है कि भौतिक मात्रा मैं के साथ काम कर रहा हूँ करने के लिए सक्षम होगा यह उपयोगी हो जाएगा। क्या ऐसा कुछ भी सिम्पी में दूरस्थ रूप से संभव है?

संपादित

मुझे नहीं लगता कि यह डुप्लिकेट है क्योंकि प्रतीकों के लिए __doc__ विशेषता अपरिवर्तनीय हो गया लगता है है। निम्नलिखित पर विचार करें:

>>> print(rhow.__doc__) 

    Assumptions: 
     commutative = True 

    You can override the default assumptions in the constructor: 

from sympy import symbols 
A,B = symbols('A,B', commutative = False) 
bool(A*B != B*A) 
    True 
bool(A*B*2 == 2*A*B) == True # multiplication by scalars is commutative 
    True 

>>> rhow.__doc__ = 'density of water' 
--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-87-bfae705941d2> in <module>() 
----> 1 rhow.__doc__ = 'density of water' 

AttributeError: 'Symbol' object attribute '__doc__' is read-only 

दरअसल एक .__doc__ विशेषता मौजूद है, लेकिन मैं अपने उद्देश्यों के लिए इसे बदल नहीं सकते हैं। यह केवल पढ़ा जाता है।

+0

की संभावित डुप्लिकेट [? वहाँ मेथेमेटिका के "उपयोग" समारोह के लिए एक बराबर है] (https://stackoverflow.com/questions/43715293/is-there-an-equivalent-to-mathematicas-usage-function) – Wrzlprmft

+0

आप इसका ट्रैक रखने के लिए एक अलग शब्दकोश का उपयोग कर सकते हैं। उदाहरण 'what_is = {}, what_is [' x '] =' दूरी (एम) ''। जब भी आप एक प्रतीक असाइन करते हैं, तो आपको अपना शब्दकोश सेट करने के लिए याद रखना होगा, लेकिन प्रतीक को असाइन करने के लिए याद रखने की आवश्यकता के समान है। – Hannebambel

उत्तर

5

आप Symbol वर्ग के वारिस और यहाँ की तरह अपने स्वयं के कस्टम संपत्ति जोड़ सकते हैं:

from sympy import Symbol, simplify 

# my custom class with description attribute 
class MySymbol(Symbol): 
    def __new__(self, name, description=''): 
     obj = Symbol.__new__(self, name) 
     obj.description = description 
     return obj 

# make new objects with description 
x = MySymbol('x') 
x.description = 'Distance (m)' 
t = MySymbol('t', 'Time (s)') 
print(x.description, t.description) 

# test 
expr = (x*t + 2*t)/t 
print (simplify(expr)) 

आउटपुट:

Distance (m) Time (s) 
x + 2 
+0

यह एक बहुत अच्छा सुझाव है लेकिन मैं वास्तव में इस तरह के गुण के साथ कई प्रतीकों की घोषणा करना चाहता हूं। मेरे मूल प्रश्न में मैं 'प्रतीकों()' दिखा रहा हूं, न कि 'प्रतीक' आदेश। क्या आप अपने प्रश्न को संपादित कर सकते हैं यदि 'प्रतीकों() 'कमांड के साथ कुछ ऐसा करना संभव है? – user32882

+0

क्या यह सब संभव है? एक ही में कई 'MySymbol' प्रकारों को घोषित करना? – user32882

+0

'प्रतीक' फ़ंक्शन के स्रोत कोड के आधार पर मल्टीडेक्लिंग के लिए अपना स्वयं का कस्टमफ़ंक्शन बनाएं। – Serenity

संबंधित मुद्दे