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 @   Mars.wang  阅读(345)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示