httplib.HTTPSConnectionから継承するクラスがあります。httplib.HTTP(s)接続から継承する際のSSLと非SSLの両方の接続の処理
class MyConnection(httplib.HTTPSConnection):
def __init__(self, *args, **kw):
httplib.HTTPSConnection.__init__(self,*args, **kw)
...
それは私も非セキュアサーバーと通信するためにそれを使用することができますので、クラスがinstantiatiedされたときにSSL層をオフにすることは可能ですか?
私SSLはそう別のソリューションを使用する必要がある場合には、初期化する前に知られている私の場合はにhttplib.HTTPSConnectionからの継承を切り替えるしようとするだろうhttplib.HTTPConnection、私もやる方法がわからないですこれは賢明な方法でですか?
class Foo:
def doit(self):
print "I'm a foo"
class Bar:
def doit(self):
print "I'm a bar"
def MakeClass(isSecure):
if isSecure:
base = Foo
else:
base = Bar
class Quux(base):
def __init__(self):
print "I am derived from", base
return Quux()
MakeClass(True).doit()
MakeClass(False).doit()
出力:あなたは工場出荷時のパターンのようなものを使用することができますPythonであなたの最後の段落毎の
ありがとうございます。もう一度私は「スーパー」を知らなかった。これにより、ファイル全体をインデントしてファクトリコードで囲む必要がなくなります。これを使用します。 – pkit
@pkit、常に喜んで助けてください! 'super'は常にcfr http://fuhm.net/super-harmful/を注意深く使用する必要がありますが、特殊な' __init__'を必要とするmixinのこのような例外的なケースのためには、本当にぴったりです。 –
これを使用すると、HTTP(S)Connection .__ init__が呼び出されていないようです。私はこのクラスの設定で何かが欠けている可能性がありますか? – pkit