我在创建的python类中遇到了一些麻烦.我试图通过剥离任何不相关的代码来创建最简单的类来调试它.我仍然有同样的问题.
class MyClass(object):
def __init__(self):
self.row = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
def get_row(self):
return self.row
if __name__ == "__main__":
a = MyClass()
b = a.row
b.remove('1')
print(a.row)
print(b)
Run Code Online (Sandbox Code Playgroud)
输出是:
['2', '3', '4', '5', '6', '7', '8', '9']
['2', '3', '4', '5', '6', '7', '8', '9']
Run Code Online (Sandbox Code Playgroud)
发生的事情是当我执行b.remove('1')时,它会按预期从b列表中删除第一个条目,但是当我查看a.row时它也已从中删除.我对类的理解和返回值b应该是a的副本,在这种情况下它看起来更像是一个指针.
任何帮助解释这实际上如何工作将非常感激.
我一直在通过专业Android 4 App开发工作,并且已经停留在其中一个教程中.我的应用程序编译正常,但是当我运行它时,它崩溃并出现错误NullPointerException:尝试在空对象引用上调用虚方法'boolean java.util.ArrayList.add(java.lang.Object'.当我输入一些文本时会发生这种情况进入edittext并点击返回.
该程序似乎在onNewItemAdded方法(todoItems.add行)中崩溃.据我所知,我的arraylist已正确初始化.
我相对来说是Java和Android开发的新手,我对于出了什么问题感到困惑.
对于那些不熟悉本书的人,该应用程序包含一个编辑文本片段和一个列表片段.
谢谢你的帮助.
ToDoListActivity.java
import android.app.Activity;
import android.app.FragmentManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import java.util.ArrayList;
public class ToDoListActivity extends Activity
implements NewItemFragment.OnNewItemAddedListener {
private ArrayAdapter<String> aa;
private ArrayList<String> todoItems;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Inflate your View
setContentView(R.layout.main);
// Get references to UI widgets
FragmentManager fm = getFragmentManager();
ToDoListFragment toDoListFragment =
(ToDoListFragment)fm.findFragmentById(R.id.ToDoListFragment);
// Create the Array List of to do items
final ArrayList<String> todoItems = new ArrayList<String>();
// Create the …Run Code Online (Sandbox Code Playgroud)