我正在尝试在__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
答案 0 :(得分:1)
Python没有访问修饰符。如果您尝试将__
视为传统的private
访问修饰符,则这是您遇到的问题之一。前导双下划线导致名称错位 - __bar
(或class Foo
内的名称class __Foo
或Foo
之前的任意数量的前导下划线将被损坏为_Foo__bar
}。
如果你真的想要保留那些领先的双重下划线,那么你必须自己明确地破坏这些名称:
self.profile = SlackApi._SlackApi__Team._Team__Profile()
这也是你完全从__Profile
之外访问SlackApi
课程的方式,所以你基本上绕过了这些东西是私密的假装。</ p>
答案 1 :(得分:0)
您可以这样访问:
SlackApi._SlackApi__Team._Team__Profile
或者像这样:
self._Team__Profile
但这是错的。为了您自己的方便,不要让他们成为私人课程。