java - 如果涉及方法内变量的范围,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?
解决方案
您定义的变量是使用self
关键字声明的。把它想象成this
在java中。
所以当你做self.big = self.data
的时候,大就变成了对象的属性。因此它可以通过对象访问。
obj.attribute
并且self.attribute
本质上是一样的。在 python 中,您可以随时创建新属性。
推荐阅读
- python - 这是我应该使用十进制库的情况吗?
- sorting - 如何在 Swi Prolog 上进行插入排序
- javascript - 我将如何根据计数增加进度条线?
- arrays - 检查数组中值的特定组合
- php - IF 语句失败
- python - Pandas groupby 计算百分比变化列
- c# - 使用 C# 和 Microsoft.TeamFoundationServer.Client 将代码签入到 TFS 2017
- vba - fillseries vba excel
- java - 访问 Hashmap 但导致 NullPointerException
- php - MySQL:快速字数统计