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()
  • 相关阅读:
    https://archive.ics.uci.edu/ml/datasets.php
    实战教程 :使用Python和keras进行文本分类(上)(重要)
    洛谷 P1073 最优贸易
    P2278 [HNOI2003]操作系统
    洛谷P2024 食物链
    模板
    我的博客
    mysql一条sql把表中的男改为女,女改为男
    树的度和结点数的关系
    Spider实例详解
  • 原文地址:https://www.cnblogs.com/liuqingzheng/p/9504210.html
Copyright © 2011-2022 走看看