Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使python代码更容易跟踪对象属性?_Python_Fortran_Readability - Fatal编程技术网

如何使python代码更容易跟踪对象属性?

如何使python代码更容易跟踪对象属性?,python,fortran,readability,Python,Fortran,Readability,我一直在阅读一些fortran项目源代码。Fortran子程序可以同时接受“in”和“out”变量,这使得可以指定子程序中更改的变量。比如说, subroutine Foo(A, B, C) real*8; intent(in)::A real*8; intent(out)::B real*8; intent(out)::C 当我调用Foo(A,B,C)时,我会知道A,B,C在子例程中可能会发生变化 但是,我通常以这种方式编写python代码: class Foo(ob

我一直在阅读一些fortran项目源代码。Fortran子程序可以同时接受“in”和“out”变量,这使得可以指定子程序中更改的变量。比如说,

subroutine Foo(A, B, C)
    real*8; intent(in)::A
    real*8; intent(out)::B
    real*8; intent(out)::C
当我
调用Foo(A,B,C)
时,我会知道
A
B
C
在子例程中可能会发生变化

但是,我通常以这种方式编写python代码:

class Foo(object):
    def __init__(self):
        self.a = 1
        self.b = 2
    def method_a(self):
        self.a = (self.a)**2
    def method_b(self):
        self.b = (self.b)**2
在我的主程序中

foo=Foo()
foo.method_a()
foo.method_b()
print(foo.a)
如果我不熟悉这段代码,就很难跟踪
foo.a
发生了什么,因为我不知道是否有任何方法更改
foo.a

那么,如何使python代码更容易跟踪对象属性呢


编辑:我必须澄清,我比fortran有更多的python经验。我的问题是如何使源代码更容易让读者跟踪对象属性。

使用描述性方法名称、大量文档,并尽量减少用户的惊讶。如果foo.a在过于复杂的情况下可能会发生更改,请使用伪私有变量(前缀为u)和getter/property decorators。真的吗?是否有任何强制方式可以使这些变量更改可见?Python描述符允许您在访问属性时运行一些代码。在描述符中,您可以添加日志记录或其他任何有助于您的内容。这不是我想要的,@AviahLaor。我想让我的代码更具可读性,而不是记录每一个更改。您使用了至少3个不同的术语来描述您的目标(“跟踪对象属性”、“使更改可见”、“使代码更具可读性”)。如果您正在寻找
const
限定符、显式引用等,那么您注定要失败:它们在Python中不存在。不要试图从语言A映射不适用于语言B的模式/习惯用法。Python广泛支持所有要显示/隐藏复杂性的OO特性(以及其他许多特性)。设计一个易于使用的API,记录它,并在一天内调用它。我的2美分。使用描述性的方法名称,大量的文档,尽量减少用户的惊讶。如果foo.a在过于复杂的情况下可能会发生更改,请使用伪私有变量(前缀为u)和getter/property decorators。真的吗?是否有任何强制方式可以使这些变量更改可见?Python描述符允许您在访问属性时运行一些代码。在描述符中,您可以添加日志记录或其他任何有助于您的内容。这不是我想要的,@AviahLaor。我想让我的代码更具可读性,而不是记录每一个更改。您使用了至少3个不同的术语来描述您的目标(“跟踪对象属性”、“使更改可见”、“使代码更具可读性”)。如果您正在寻找
const
限定符、显式引用等,那么您注定要失败:它们在Python中不存在。不要试图从语言A映射不适用于语言B的模式/习惯用法。Python广泛支持所有要显示/隐藏复杂性的OO特性(以及其他许多特性)。设计一个易于使用的API,记录它,并在一天内调用它。我的2美分。