python内部类

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()

 

posted @ 2021-09-17 22:06  Mars.wang  阅读(334)  评论(0编辑  收藏  举报