クラスを入れ子にして、インナークラスを定義することができる。
次の例では、MainClassの中でInnerClassを定義して、それぞれのクラスのプロパティにアクセスしている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class MainClass: class InnerClass: def __init__(self): self.prop = "inner class" def __init__(self): self.prop = "main class" self.inner = MainClass.InnerClass() obj = MainClass() print(obj.prop) print(obj.inner.prop) # main class # inner class |
留意点として、アウタークラスからインナークラスを参照する際に、[アウタークラス名].[インナークラス名]
とすること。インナークラス名だけで定義しようとすると「そんなクラスはないよ」と怒られる。
なお、インナークラスの定義位置は、必ずしもアウタークラスの冒頭でなくてもよい。
1 2 3 4 5 6 7 8 |
class MainClass: def __init__(self): self.prop = "main class" self.inner = MainClass.InnerClass() class InnerClass: def __init__(self): self.prop = "inner class" |