C++ 上では NULL な TObject の扱い
PyROOT だと C の NULL が扱えないので、NULL な TObject を返すような ROOT の関数 (TFile::Get など) では、混乱する時があります。自分は毎回ググってるような…。
例えばここなんかに丁寧に説明がありますが、自分用の忘備録として blog にも書いておきます。
>>> import ROOT >>> f = ROOT.TFile("test.root", "recreate") >>> obj = f.Get("test") >>> type(obj) <class 'ROOT.TObject'> >>> obj <ROOT.TObject object at 0x0> >>> obj == None True >>> obj is None False >>> not obj True
こんな感じで、NULL の替わりに None が来ると思って is None で調べちゃ駄目。でも == None で調べるのは OK。ややこしい。