2010-08-13 4 views
3

меня есть два класса, предположим, что А и В. В В, I экземпляр A.ту же функцию от двух различных классов

У меня есть функция func(), которая требуется обоих классов.

Как мне это сделать? Я думал об этом подходе:

class A: 
    func() 

class B: 
    x = A() 
    func() 

def func(): 

И тогда я могу получить доступ к FUNC() из A или B. Является ли этот подход OK или есть лучший способ сделать это (возможно, используя OO подход)

Обратите внимание, что я новичок в программировании OO, и именно поэтому я заинтересован в том, могу ли я применить к нему любой дизайн OO.

Редактировать: Функция может отличаться в зависимости от аргументов.

+0

возможно дубликат [Вызов метода из класса в другой класс в Python] (http://stackoverflow.com/questions/3311987/calling -method-from-a-class-in-a-different-class-in-python) –

+0

Что с этим дурацким синтаксисом? Почему вы вызываете функцию внутри объявления класса? – rfw

ответ

1

Определите func, прежде чем вы определяете какой-либо класс, и он будет доступен для обоих.

+0

Является ли это хорошей практикой как таковой? Или это результат плохого дизайна. – Chris

+0

Насколько я знаю, это самый простой способ сделать это, и, как утверждает Zen of Python, «Simple лучше, чем сложный». –

+2

@ Крис: Может быть, хорошо, может быть плохо. Это зависит от того, что является func и чем являются классы. В Python функции уровня модуля, подобные этому, не являются незаконными, как в Java (хотя я должен отметить, что у людей Java есть несколько шаблонов, которые работают вокруг этого), а функции уровня модуля довольно часто используются в стандартных библиотеках Python , например. –

0

FUNC здесь может мне метод общего базового класса

class Base(object): 
    def func(): 
     #... 
class A(Base): 
    #... 
class B(Base): 
    #... 
Смежные вопросы