相当于Python中的结构成员(主要用于文档和阅读代码)

2024-06-28 20:51:39 发布

您现在位置:Python中文网/ 问答频道 /正文

记录的(private->;x)数据成员会很有帮助 我可以这样说:

struct foo {
  foo* p_a /* Documentation */
  foo ** pp_b /* Documentation */
};

但是对于Python(可以说我们是在一个不同的编程环境中) 这里的模型)做这件事的首选方法是什么?含蓄地 通过引用来定义它们并不能在我需要的时候削减它 立即查看这个类的模型。你知道吗

这对于直接转换为UML也很有用 图表等。。你知道吗


Tags: 数据方法模型gt定义环境foodocumentation
2条回答

你说得对,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的方式。你知道吗

可以使用docstring(三重引号字符串)作为类或方法中的第一个语句;最接近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 ): ...

相关问题 更多 >