Python类UML标注访问修饰符是否规范?变量命名规则咨询
Python UML访问修饰符与变量命名规范解答
关于UML中标注public/private/protected是否为标准做法
当然是标准做法!UML本身就定义了+(public)、-(private)、#(protected)这三种访问修饰符的标注规则,用来明确类成员的可见性。
针对Python代码的UML建模,行业里通常会把Python的命名约定和UML的修饰符对应起来:
- 无下划线的公共成员 → UML标注
+,比如你例子里的+name_of_shop: str - 单下划线开头的成员(Python约定的“内部使用”,protected)→ UML标注
# - 双下划线开头的成员(Python的名称修饰,private)→ UML标注
-,比如你提到的-n: int
这种标注能清晰传递代码的设计意图,不管是自己维护还是团队协作,都是很实用的标准操作。
关于“内部变量用双下划线开头是否符合标准”
这里要区分Python里两种下划线命名的不同意图:
- 单下划线
_var:这是Python社区的通用约定,用来表示“这个变量/方法是内部实现细节,外部代码不要直接访问或依赖”。它没有强制的访问限制,只是一种“君子协定”,适合大多数仅需标识内部使用的场景。 - 双下划线
__var:这会触发Python的名称修饰机制,Python会把它重命名为_ClassName__var,目的是避免子类意外覆盖父类的成员,或者外部代码不小心修改到它。它比单下划线的约束更强,但本质上还是可以通过修改后的名称访问,并非真正的“私有”。
所以如果你的变量只是“不会在函数外部被访问”,更符合Python标准的做法是用单下划线开头。双下划线更适合你需要严格防止子类或外部误修改的场景,而不是普通的内部使用标识。
内容的提问来源于stack exchange,提问作者Wizard
相关产品推荐
相关产品推荐

