python中如何让构造函数变成private的?

guanliyuanjia 2007-06-29 05:31:41
我希望让构造函数成为private,别人只能通过getMyClass()来获取实例。
请问怎么做?
谢谢!
...全文
344 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
CathySun118 2007-06-29
  • 打赏
  • 举报
回复
不了解python
xyzxyz1111 2007-06-29
  • 打赏
  • 举报
回复
为了更严密一点, 应该
<<<
if len(sf) < 2 or sf[-2][2] != 'getMyClass':
>>>
if len(sf) < 2 or sf[-2][2] != 'getMyClass' or sf[-2][0] != sf[-1][0]:
xyzxyz1111 2007-06-29
  • 打赏
  • 举报
回复
试用decorator

import traceback
def private(func):
____def access_check(*args):
________sf = traceback.extract_stack()
________if len(sf) < 2 or sf[-2][2] != 'getMyClass':
____________raise "Access Denied"
________else:
____________return func(*args)
____return access_check

class MyClass:
____@classmethod
____def getMyClass(cls):
________return cls()

____@private
____def __init__(self):
________self.val = 9

if __name__ == '__main__':
____#a = MyClass()
____a = MyClass.getMyClass()
____print a.val

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧