zoukankan      html  css  js  c++  java
  • Python内部类,内部类调用外部类属性,方法

    一 Python中内部类

    典型定义:

    class MyOuter:
        age=18
        def __init__(self,name):
            self.name=name
    
        class MyInner:
            def __init__(self,inner_name):
                self.inner_name=inner_name
    
    out=MyOuter('lqz')
    inner=out.MyInner('lqz_inner')
    print(inner.inner_name)

    二 内部类调用外部类的属性和方法

    (注意是类属性和类方法,不是对象属性和对象的绑定方法)

    class MyOuter:
        age=18
        def __init__(self,name):
            self.name=name
        @classmethod
        def outer_class_method(cls):
            print('我是外部类的类方法')
    
        class MyInner:
            def __init__(self,inner_name):
                self.inner_name=inner_name
            def inner_method(self):
                print('我是内部类的对象方法')
                MyOuter.outer_class_method()
    
    out=MyOuter('lqz')
    inner=out.MyInner('lqz_inner')
    inner.inner_method()

    三 内部类调用外部对象的对象属性和方法

    需要在内部类构造的时候,把对象传过来

    class MyOuter:
        age=18
        def __init__(self,name):
            self.name=name
        @classmethod
        def outer_class_method(cls):
            print('我是外部类的类方法')
        def outer_obj_method(self):
            print('我是外部类对象的绑定方法')
    
        class MyInner:
            def __init__(self,inner_name,obj):
                self.inner_name=inner_name
                self.obj=obj
            def inner_method(self):
                print('我是内部类的对象方法')
                MyOuter.outer_class_method()
                self.obj.outer_obj_method()
    
    out=MyOuter('lqz')
    inner=out.MyInner('lqz_inner',out)
    inner.inner_method()
  • 相关阅读:
    算法导论第11章 散列表
    Ubuntu14.04上安装Jupyter的方法
    WinSCP连接远程的Ubuntu失败
    K-means和K-means++好的网站
    Ubuntu14.04上安装pip的方法
    算法导论第一章
    微服务架构的特点
    国内maven仓库地址 || 某个pom或者jar找不到的解决方法
    REST or RPC?
    zookeeper安装及环境变量设置
  • 原文地址:https://www.cnblogs.com/liuqingzheng/p/9504210.html
Copyright © 2011-2022 走看看