1

私は1人の親と1ダースの子供を持つライブラリを持っています:

# mylib1.py:
#
class Foo(object):
  def __init__(self, a):
    self.a = a


class FooChild(Foo):
  def __init__(self, a, b):
    super(FooChild, self).__init__(a)
    self.b = b

# more children here...

ここで、そのライブラリを単純な (ただし、別のアプローチで使用するために少し特殊な) メソッドで拡張したいと考えています。そこで、親クラスを変更してその子を使用したいと思います。

# mylib2.py:
#
import mylib1

def fooMethod(self):
  print 'a={}, b={}'.format(self.a, self.b)

setattr(mylib1.Foo, 'fooMethod', fooMethod)

そして今、私はそれを次のように使うことができます:

# way ONE:
import mylib2

fc = mylib2.mylib1.FooChild(3, 4)
fc.fooMethod()

またはこのように:

# way TWO:
# order doesn't matter here:
import mylib1
import mylib2

fc = mylib1.FooChild(3, 4)

fc.fooMethod()

だから、私の質問は次のとおりです。

  1. これは良いことですか?
  2. これをより良い方法で行うにはどうすればよいですか?
4

2 に答える 2