2010-07-21 24 views
5
Python 2.6.4 (r264:75706, Dec 7 2009, 18:45:15) 
[GCC 4.4.1] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> class A(object): 
...  def f(self): 
...    print self.k 
... 
>>> class B(object):pass 
... 
>>> a=A() 
>>> b=B() 
>>> a.k="a.k" 
>>> b.k="b.k" 
>>> a.f() 
a.k 
>>> A.f(a) 
a.k 
>>> A.f(b) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unbound method f() must be called with A instance as first argument (got B instance instead) 
>>> 

Tôi làm cách nào để thực hiện việc này?Python: Cách gọi phương thức không liên kết với thông số loại khác?

được sửa đổi: ví dụ này là rõ ràng hơn

+0

Thật bất thường khi cần làm điều này. Bạn có phải là bạn không thể sử dụng trang trí 'staticmethod' để giải quyết vấn đề của mình không? –

Trả lời

8

Sử dụng im_func thuộc tính của phương pháp.

A.f.im_func(b) 
+1

Trong Python 2.6+, bạn cũng có thể sử dụng 'A.f .__ func__' ([docs] (http://docs.python.org/2.6/reference/datamodel.html)) –

Các vấn đề liên quan