记录(private - > _x)数据成员会很有帮助 我可以说同样的一个课程:
struct foo {
foo* p_a /* Documentation */
foo ** pp_b /* Documentation */
};
但是对于Python(可以说我们处于不同的编程中) 这里的模型)这样做的首选方式是什么?隐 通过引用定义它们不会在我想要的时候削减它 立刻看看这个班的模特。
这对于直接转换为UML也很有用 图等。
答案 0 :(得分:1)
您可以使用docstring(三引号字符串)作为类或方法中的第一个语句;与文档字符串标准格式最接近的内容指定为PEP 257。
class foo( object ):
"""
This is a foo.
_a is foo's a; there are many like it but this one is foo's.
_b is foo's b and demons may fly out of your nose if you modify it.
"""
def __init__( self ): ...
答案 1 :(得分:1)
你是对的,Python 是一种不同的编程模型。要理解的是,在Python中,当你看到这个时:
class Foo(object):
...
这不是真的“类声明”。它更像是一种“阶级创造”。在解释器到达class..
行的那一刻,而不是之前,会创建类对象并使其准备就绪。关于这个类对象的一件事是基本上对它的实例一无所知。
该类唯一可以访问实例(并且数据成员通常位于实例上)的时间是它实际运行的方法。语法如下:
def bar(self, x):
...
很有意思。 显式第一个参数有点暗示正在发生不同的事情。这是对的:当你写instance.bar(x)
时,真正发生的是Foo.bar(instance, x)
。
意味着Foo
获得实例的唯一机会就是使用方法。
因此,如果您需要显式类模型,最好的选择可能是明确地将其列出__init__
方法。
class Foo(object):
def __init__(self):
self._bar = None # Bar is an important "private" member
self._baz = None # As is baz
self._fizzbuzz = 4 # Of course, you can also provide defaults here
如果我不在这里,我希望得到纠正 - 但这就是我目前理解Python的方式。