问题描述
假设我有一个使用生成器函数的 Python 脚本 public class PremiseAdapter extends RecyclerView.Adapter<PremiseAdapter.ViewHolder> {
private ArrayList<Premise> mPremiseData;
private Context context;
private int selected_position = -1;
OnItemClickListener onItemClickListener;
public interface OnItemClickListener {
void onItemClick(int position);
}
public void setonItemClickListener(OnItemClickListener itemClickListener) {
onItemClickListener = itemClickListener;
}
public PremiseAdapter(Context context,ArrayList<Premise> mPremiseData) {
Log.d("rcvTest","PremiseAdapter.PremiseAdapter");
this.mPremiseData = mPremiseData;
this.context = context;
}
//required method for creating the viewholder objects.
@NonNull
@Override
public PremiseAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
Log.d("rcvTest","---------------------> PremiseAdapter.ViewHolder.onCreateViewHolder");
return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.list_premises,parent,false),onItemClickListener);
}
//required method that binds the data to the viewholder.
@Override
public void onBindViewHolder(@NonNull PremiseAdapter.ViewHolder holder,int position) {
// Get current premise.
// Populate the textviews with data.
}
@Override
public int getItemCount() {
Log.d("rcvTest","PremiseAdapter.getItemCount");
return mPremiseData.size();
}
/*----------------------------------- CLASS VIEWHOLDER -------------------------------------------*/
/*----------------------------------- CLASS VIEWHOLDER -------------------------------------------*/
/*class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {*/
class ViewHolder extends RecyclerView.ViewHolder {
// Member Variables for the TextViews
//Constructor for the ViewHolder,used in onCreateViewHolder().
ViewHolder(@NonNull View itemView,OnItemClickListener listener) {
super(itemView);
cardView = itemView.findViewById(R.id.cardview_premise);
Log.d("rcvTest","[ViewHolder].ViewHolder.TOP");
// Initialize the views.
// Set the OnClickListener to the entire view.
int clickedColor = Color.parseColor("#D5F5E3");
itemView.setonClickListener((v) -> {
int position = getAdapterPosition();
Log.d("rcvTest","[ViewHolder].ViewHolder.listener: " + listener);
Log.d("rcvTest","[ViewHolder].ViewHolder.getAdapterPosition(): " + getAdapterPosition());
Log.d("rcvTest","[ViewHolder].ViewHolder.position: " + position);
Log.d("rcvTest","getLayoutPosition(): " + getLayoutPosition());
if (position != RecyclerView.NO_POSITION) {
Log.d("rcvTest","[ViewHolder].ViewHolder.position != RecyclerView.NO_POSITION");
itemView.setBackgroundColor(clickedColor);
} else if (position == RecyclerView.NO_POSITION) {
Log.d("rcvTest","[ViewHolder].ViewHolder.position == RecyclerView.NO_POSITION");
itemView.setBackgroundColor(clickedColor);
}
notifyItemChanged(position);
notifyItemChanged(getLayoutPosition());
});
}
void bindTo(Premise currentPremise) {
// Populate the textviews with data.
Log.d("rcvTest","[ViewHolder].bindTo.TOP: " + currentPremise.getPremiseName());
}
}
}
:
yieldtest.py
它工作正常。但是假设出了点问题,所以我想调试它。所以我输入:
def yieldfunc():
yield 2
yield 4
yield 8
yield 16
def main():
nums = yieldfunc()
for n in nums:
print(n)
if __name__ == "__main__":
main()
然后,当我到达 $ python -m pdb yieldtest.py
行时,我输入 nums = yieldfunc()
并按 Enter,我希望这会带我进入 s
,以便我可以看到引擎盖下发生了什么。然而,事实并非如此。相反,它会将我带到 yieldfunc()
中的下一行:
def main()
这意味着我必须对使用 > /...path/yieldtest.py(8)main()
-> nums = yieldfunc()
(Pdb) s
> /...path/yieldtest.py(9)main()
-> for n in nums:
(Pdb)
的所有函数进行实质上的黑盒测试。
是否有任何使用 PDB 调试器的解决方案可以让我进入生成器函数?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)