簡體   English   中英

如何確定方法從哪個類繼承?

[英]How to determine from which class a method was inherited from?

是否有可能告訴我們從哪個類繼承了一個方法。 舉個例子

class A:
   def foo():
     pass
class B(A):
   def boo(A):
     pass
class C(B):
   def coo()
     pass
class D(C):
   def doo()
      pass  

>>> dir (D)
['__doc__', '__module__', 'boo', 'coo', 'doo', 'foo']

有什么方法可以告訴我從哪個類boo,coo,foo繼承自哪個類?

使用檢查模塊:

class A:
   def foo(self):
     pass
class B(A):
   def boo(Aself):
     pass
class C(B):
   def coo(self):
     pass
class D(C):
   def doo(self):
      pass  

import inspect 
inspect.classify_class_attrs(D)

[('__doc__', 'data', <class __main__.D at 0x85fb8fc>, None),
 ('__module__', 'data', <class __main__.D at 0x85fb8fc>, '__main__'),
 ('boo',
  'method',
  <class __main__.B at 0x85fb44c>,
  <function boo at 0x8612bfc>),
 ('coo',
  'method',
  <class __main__.C at 0x85fb8cc>,
  <function coo at 0x8612ca4>),
 ('doo',
  'method',
  <class __main__.D at 0x85fb8fc>,
  <function doo at 0x8612f0c>),
 ('foo',
  'method',
  <class __main__.A at 0x85fb71c>,
  <function foo at 0x8612f7c>)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM