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

 

REF

https://blog.csdn.net/qq_42721964/article/details/85044615

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章