Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
4 Trả lời
16197 Lượt xem

Hi All,

How to override method without class?

e.g

In a.py file have one method

def abc(self):
     print "Called ABC()"

 

In b.py i want to override a.py file's abc() method.

 

=================================
I clear about.

1) I am not talking about Class method override.
2) And no any class use in a.py and b.py
3) It is possible to override abc() method without class ?

 

Thanks in advance,
Harsh Dhaduk
 

Ảnh đại diện
Huỷ bỏ
Tác giả

PS :- Monkey Patch using hook https://youtu.be/8K1o9Xhk4gY

Câu trả lời hay nhất

from a import abc

def new_method():

    ----

abc = new_method

OR

import a

def new_method():

    ----

a.abc = new_method

it's called monkey patching.  You can search the net for other examples, but here is one: http://stackoverflow.com/questions/19545982/monkey-patching-a-class-in-another-module-in-python

Ảnh đại diện
Huỷ bỏ

method abc is in module a

Good catch Ben. I've updated the answer.

Câu trả lời hay nhất

Hi Harsh,

To override a method you have to understand the object to which that method belongs.

If method abc() belongs to class object 'test'

ie. in .py file it will be like:-

class test (osv.osv):

    _name = 'test'

    def abc():

        return True

 

If you want to override that function you have to define a class to inherit that object and then define method with same name. Eg:-

IN b.py file

class test(osv.osv):

    _inherit = 'test'

    def abc():

        return True

 

Here we overrided the method abc()

Ảnh đại diện
Huỷ bỏ

Thanks a lot!

Tác giả Câu trả lời hay nhất

Hi Baiju i am not talking about class method override.

Hi Ivan have other examples like monkey patching?

Hi Bole i tried that one but not working.

 

Thanks for your replay.

Ảnh đại diện
Huỷ bỏ

Google python monkey patch and you can get a lot of examples.

Câu trả lời hay nhất

try in b.py:

import a
def ab1(self...):
   something here

a.abc = ab1

 

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
0
thg 3 25
1364
4
thg 4 24
174247
0
thg 12 23
2154
5
thg 7 25
227983
1
thg 12 22
3269