python - 嵌套类访问修饰符

时间:2016-09-27 19:38:25

标签: python nested private python-3.5

我正在尝试在__Profile类的构造函数中创建__Team类的实例,但我无法访问__Profile。我该怎么办?

这是我的代码

class SlackApi:
    # my work
    class __Team:
        class __Profile:
            def get(self):
                # my work 
        def __init__(self, slackApi):
            self.slackApi = slackApi
            self.profile = __Profile()
            self.profile = __Team.__Profile()
            self.profile = SlackApi.__Team.__Profile()
            # I tried to all of these case, but I failed
            # I need to keep '__Team', '__Profile' class as private class

我的python版本是3.5.1

2 个答案:

答案 0 :(得分:1)

Python没有访问修饰符。如果您尝试将__视为传统的private访问修饰符,则这是您遇到的问题之一。前导双下划线导致名称错位 - __bar(或class Foo内的名称class __FooFoo之前的任意数量的前导下划线将被损坏为_Foo__bar }。

如果你真的想要保留那些领先的双重下划线,那么你必须自己明确地破坏这些名称:

self.profile = SlackApi._SlackApi__Team._Team__Profile()

这也是你完全从__Profile之外访问SlackApi课程的方式,所以你基本上绕过了这些东西是私密的假装。<​​/ p>

答案 1 :(得分:0)

您可以这样访问:

SlackApi._SlackApi__Team._Team__Profile

或者像这样:

self._Team__Profile

但这是错的。为了您自己的方便,不要让他们成为私人课程。