首页 > 解决方案 > 如果涉及方法内变量的范围,python 与 java 有什么不同吗?

问题描述

我正在编写以下代码:

class NewList():

    def __init__(self,initial_state):
        self.data = initial_state

    def append(self,new_item):
        self.data = self.data + [new_item]
        self.big = self.data

    def deppend(self,new_item):
        self.data = self.data + [new_item]
        self.big = self.big + [new_item]


    my_list = NewList([1,2,3,4,5])
    print(my_list.data)
    my_list.append(6)
    print(my_list.data)
    print(my_list.big)
    my_list.deppend(7)
    print(my_list.data)
    print(my_list.big)

我不认为在方法中声明的数据、大等变量可以在 Java 中的另一种方法中使用。但是,在 python 中,我们可以很容易地使用它们。是否在python中的方法内声明的变量具有全局范围而不是具有局部范围的java?

标签: javapython

解决方案


您定义的变量是使用self关键字声明的。把它想象成this在java中。

所以当你做self.big = self.data的时候,大就变成了对象的属性。因此它可以通过对象访问。

obj.attribute并且self.attribute本质上是一样的。在 python 中,您可以随时创建新属性。


推荐阅读