最新の一連の質問で、 の内部をいじることについて尋ねましたargparse
。ほとんどの場合、次のように定義された属性を変更したい:
class FooClass(object):
def __init__(self):
self._this_is_a_re=re.compile("foo")
「保護」されているため、独自の正規表現に置き換える前に、この属性が存在するかどうか、正規表現であるかどうかを確認したいと思います。例えば:
import re
myFoo=FooClass()
attr='_this_is_a_re'
if(hasattr(myFoo,attr) and isinstance(getattr(myFoo,attr),re.RegexObject):
setattr(myFoo,attr,re.compile("bar"))
これは属性エラーで失敗します。これは、ドキュメントRegexObject
に記載されているにもかかわらずre に名前が付けられた属性がないためです。RegexObject が文書化されているのに利用できないのはなぜですか? 私はそこで何を使うべきですか?と言えると思いますが、それは醜いようです...type(a) is type(b)