📅  最后修改于: 2023-12-03 14:46:39.567000             🧑  作者: Mango
在Python中,类中可以定义另一个类,这被称为内部类。内部类可以在外部类中访问私有属性和方法,并且可以在外部类之外被访问。另外,内部类和外部类之间可以互相访问私有成员。
内部类定义与外部类类似,只不过是在外部类中定义。内部类可以当做普通类一样使用。
class OuterClass:
def __init__(self):
self.__x = 10
def __str__(self):
return 'OuterClass'
class InnerClass:
def __init__(self):
self.__y = 20
def __str__(self):
return 'InnerClass'
在上述代码中,InnerClass
是OuterClass
的内部类。InnerClass
中定义了一个私有属性__y
。
要访问内部类的实例,需要先创建外部类的实例,然后通过外部类的实例创建内部类的实例。
outer = OuterClass()
inner = outer.InnerClass()
在上述代码中,首先创建了OuterClass
的实例outer
,然后使用outer.InnerClass()
的方式创建了InnerClass
的实例。
在内部类中可以访问外部类的私有成员,也可以访问自身的私有成员。同样,在外部类中也可以访问内部类的私有成员。
class OuterClass:
def __init__(self):
self.__x = 10
def __str__(self):
return 'OuterClass'
class InnerClass:
def __init__(self):
self.__y = 20
def __str__(self):
return 'InnerClass'
def get_x(self, outer):
return outer.__x
def get_y(self):
return self.__y
def get_y(self):
inner = self.InnerClass()
return inner.get_y()
在上述代码中,InnerClass
中定义了两个方法get_x
和get_y
,分别用于访问外部类的私有属性__x
和内部类的私有属性__y
。OuterClass
中也定义了一个方法get_y
,用于访问内部类的私有属性__y
。
Python中的内部类可以在外部类中访问私有成员,同时内部类和外部类之间也可以互相访问私有成员。内部类的定义方式与外部类类似,但是需要在外部类中定义。要访问内部类的实例,需要先创建外部类的实例,然后通过外部类的实例创建内部类的实例。