java有四种内部类,用于在类内部完成较为复杂的逻辑,并且可以访问类的私有属性
python也有内部类,与java内部类差不多,下面是简单的用法
class Outer: age = 18 def __init__(self, task_id): self.task_id = task_id def common(self): print("我是外部类的普通方法") return self.task_id @classmethod def c_method(cls): print("我是外部类的类方法") @staticmethod def println(): print("我是外部类的静态方法") # obj代表外部类的对象 class Inner: def __init__(self, table_name, obj): self.table_name = table_name self.obj = obj def __str__(self): print("打印外部类的类属性") print(Outer.age) print("打印外部类的类方法") Outer.c_method() print("打印外部类的静态方法") Outer.println() print("打印外部类的普通方法") self.obj.common() print("打印外部类的属性task_id" + self.obj.task_id) return self.table_name def run(self): print("启动") def execute(self): # 外部类方法访问内部类 print("外部类方法实例化内部类") inner_obj = self.Inner("table", self) print("在外部类方法打印内部类对象" + str(inner_obj)) inner_obj.run() if __name__ == "__main__": outer = Outer("task") print('outer对象' + str(outer)) inner = Outer.Inner("table", outer) print('inner对象' + str(inner)) outer.execute()