পাইথন ডাস্ট্রিংয়ে ক্লাস পদ্ধতির লিঙ্ক


89

আমি একই ক্লাসের অন্য পদ্ধতির ডক্ট্রিংয়ের মধ্য থেকে আমার ক্লাসের একটি পদ্ধতির সাথে একটি লিঙ্ক যুক্ত করতে চাই। আমি স্পিংক্সে এবং পছন্দসই স্পাইদার এবং অন্যান্য পাইথন আইডিইতে লিঙ্কটি কাজ করতে চাই।

আমি বেশ কয়েকটি অপশন চেষ্টা করেছিলাম এবং কেবলমাত্র একটি কাজ করে যা কার্যকর হয় তবে এটি জটিল।

ধরুন নীচের কাঠামোটি এতে mymodule.py

def class MyClass():
    def foo(self):
        print 'foo'
    def bar(self):
        """This method does the same as <link to foo>"""
        print 'foo'

আমি নিম্নলিখিত বিকল্পগুলির জন্য চেষ্টা করেছিলাম <link to foo>:

  • : ফানক: `foo`
  • : func: `self.foo`
  • : func: `MyClass.foo`
  • : ফানক: `mymodule.MyClass.foo``

কার্যকরভাবে একটি লিঙ্ক উত্পাদনকারী একমাত্র হ'ল: ফানক: `mymodule.MyClass.foo`, তবে লিঙ্কটি দেখানো হয়েছে mymodule.MyClass.foo() এবং আমি একটি লিঙ্ক আছে যা হিসাবে দেখানো হয় চান foo()বা foo
উপরের বিকল্পগুলির মধ্যে কোনওটি স্পাইডারে একটি লিঙ্ক তৈরি করে না।

আপনার সাহায্যের জন্য ধন্যবাদ.


"অ্যাড ... এর মধ্যে থেকে" মানে কি ??? একটি লিঙ্ক এবং একটি হাইপারলিংকের মধ্যে পার্থক্য কী?
আইকুম

আমি বিভ্রান্তি এড়ানোর জন্য hyperlinkদ্বারা প্রতিস্থাপন link
সরোলে

আমি এখনও আপনার প্রশ্ন খুব ভাল বুঝতে পারছি না। আপনার অর্থ কি আপনি বোঝাতে চান যে, আপনি স্ফিংস থেকে বা স্পাইডার বা অন্যের কাছ থেকে পাইথন আইডিই, ফাংশনটির ডক্ট্রিংয়ের একটি জিজ্ঞাসাবাদ barযা "আপনি যে ফাংশন বা পদ্ধতিটি অনুসন্ধান করেছেন" সেটি তথ্য দেবে ?
আইকেম

দ্বিতীয়ত, কি পার্থক্য আপনার মধ্যে করতে পারি mymodule.MyClass.foo()এবং foo()? এবং আপনি কি "প্রদর্শন" বলছেন ? এটি কি কোনও স্ট্রিংয়ের প্রদর্শন? অথবা আপনি কি কোনও জিনিস ফেরত চান? এই পরবর্তী ক্ষেত্রে, প্যানস শেষে mymodule.MyClass.foo()এবং foo()অনেক বেশি।
equeque

বিভ্রান্তির জন্য দুঃখিত, একটি প্রশ্ন সংক্ষিপ্তভাবে ব্যাখ্যা করা সবসময় শক্ত। আমি কেবলমাত্র একটি লিঙ্ক রাখতে চাই যাতে আপনি ক্লিক করতে পারেন, এটি আপনাকে ফু () এর ডকাস্ট্রিংয়ে নিয়ে যাবে (আইডিইয়ের ডকুমেন্টেশন উইন্ডোতে, বা স্পিনিক্সের এইচটিএমএল বিল্ডে)। প্রথম বন্ধনী সম্পর্কে: এগুলি সঠিক:: ফানক: mymodule.MyClass.fooলিঙ্কটির ফলে প্রথম বন্ধনী রয়েছে। এবং আমি আবার প্রশ্নটি আবার জবাব দিয়েছি।
সরোলে

উত্তর:


90

স্ফিংক্সের জন্য যে সমাধানটি কাজ করে তা হ'ল রেফারেন্সটির সাথে উপসর্গ করা ~

ক্রস-রেফারেন্সিং সিনট্যাক্সের স্ফিংস ডকুমেন্টেশন অনুসারে ,

আপনি যদি ~ এর সাথে সামগ্রীটি উপসর্গ করেন তবে লিঙ্ক পাঠ্যটি কেবলমাত্র টার্গেটের শেষ উপাদান। উদাহরণস্বরূপ: py: meth: ~Queue.Queue.getQueue.Queue.get উল্লেখ করবে তবে কেবল লিঙ্কটির পাঠ্য হিসাবে প্রদর্শিত হবে।

সুতরাং উত্তরটি হ'ল:

class MyClass():
    def foo(self):
        print 'foo'
    def bar(self):
        """This method does the same as :func:`~mymodule.MyClass.foo`"""
        print 'foo'

এইচটিএমএল এর মতো দেখতে এটির ফলাফল: This method does the same as foo()এবং foo()এটি একটি লিঙ্ক।

তবে নোট করুন যে এটি লিঙ্ক হিসাবে স্পাইডারে প্রদর্শিত নাও হতে পারে।


15
( স্পাইডার দেব এখানে ) @ ভবিষ্যতে এই পরিস্থিতির উন্নতি করার পরিকল্পনা করছি। আমি পুরোপুরি সম্মত হয়েছি এটি পেয়ে সত্যিই দুর্দান্ত লাগবে;)
কার্লোস কর্ডোবা

এটি সত্যিই দুর্দান্ত, এটির অপেক্ষায়। স্পাইডারে আপনার সমস্ত কাজের জন্য ধন্যবাদ!
সরোলে

আপনি :any:ভূমিকা দিয়ে এটি করতে পারেন - নোট দেখুন default_setting
nnot101

4
সম্পূর্ণ মডিউল পথ ব্যবহার না করেই কি ক্রস-রেফারেন্স করা সম্ভব?
জোনাথন

4
পরিবর্তে :func:, আমি এটি হতে পারে পাওয়া যায় নি :meth:
লিও ফাং

37

আপনি যদি ম্যানুয়ালি লিঙ্কটির পাঠ্য নির্দিষ্ট করতে চান তবে আপনি ব্যবহার করতে পারেন:

:func:`my text <mymodule.MyClass.foo>`

আরও তথ্যের জন্য, পাইথন অবজেক্টগুলি ক্রস-রেফারেন্সিং চেকআউট করুন ।


ধন্যবাদ, ধন্যবাদ। লিঙ্কটি দেখে আমি জানতে পেরেছি যে রেফারেন্সটির সাথে উপসর্গ ~করা আমার যা প্রয়োজন তা আরও কাছে। আমি এটি একটি পৃথক উত্তরে রেখেছি। এটি স্পাইডারে এখনও কাজ করে না ...
সরোলে

-4

আমার কাছে মনে হচ্ছে আপনি যা চান তা পেতে আপনাকে কেবল যুক্ত করতে __name__বা __doc__আপনার অভিব্যক্তিতে যোগ করতে হবে।
আমি এখনও লক্ষ্যটি সঠিকভাবে বুঝতে পেরেছি তা নিশ্চিত নই

class MyClass():
    def foo(self):
        """I am the docstring of foo"""
        print 'foo'
    def bar(self):
        """This method does the same as <link to foo>"""
        print 'foo'

print
print MyClass.foo
print MyClass.foo.__name__
print MyClass.foo.__doc__
print
print MyClass.__dict__['foo']
print MyClass.__dict__['foo'].__name__
print MyClass.__dict__['foo'].__doc__

ফলাফল

<unbound method MyClass.foo>
foo
I am the docstring of foo

<function foo at 0x011C27B0>
foo
I am the docstring of foo

4
আমি মনে করি আপনি প্রশ্নের বিন্দুটি মিস করেছেন: আমি স্পিনিক্স দ্বারা নির্মিত আমার ডকুমেন্টেশনের এইচটিএমএলে একটি লিঙ্ক (হাইপারলিঙ্ক) পেতে চাই।
সরোলে

আপনি ঠিক বলেছেন, আমি বিন্দু মিস করছি। এবং এটি কারণ আমি স্পিনক্সকে জানি না। তাই আমি স্পিনক্স ইনস্টল করার চেষ্টা করেছি। তবে আমি সফল হই নি। আমি উইন্ডোতে আছি এবং নথিতে যেমন বলা হয়েছে আমি স্ফিংস-কুইকস্টার্টটি ব্যবহার করার চেষ্টা করেছি। তবে আমি মনে করি ইনসলেশন প্রক্রিয়া সম্পর্কে আমার একটি ভুল ধারণা রয়েছে। আমি আপনাকে সাহায্য করতে পারি না, দুঃখিত। স্পিনক্সের প্রসঙ্গে 'হাইপারলিঙ্ক' দ্বারা আন্ডারসুডের কী হবে তা আমি জানি না।
আইকোম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.