首页 > 解决方案 > 将作为参数给出的任意属性更改为函数

问题描述

对于一个项目,我正在尝试重新创建一个写在 Paper 上的系统。它涉及从 F 到 A 的排名顺序,作为对象属性在该尺度上排名的多个统计数据,以及旨在将其中一个统计数据作为输入并将其提高或降低一定量的函数。问题是我需要该函数来更改函数本身内部的属性。为了尝试这个,我首先列出了排名

stat_ranking = [None,"F","E","D","C","B","A",None]

然后创建了类

class char():
  def __init__(self,X,Y,Z):
    self.X = X
    self.Y = Y
    self.Z = Z
  def stat_change(self,stat,amount):
    for i in range(abs(amount)):
      if amount > 0:
        newValue = stat_ranking[stat_ranking.index(stat)+1]
      else:
        newValue = stat_ranking[stat_ranking.index(stat)-1]
      if newValue != None:
        stat = newValue

并在其中创建了一个对象。 box = char("D","C","A")

例如,我想要发生的是,我可以给它输入: box.stat_change(box.X,2) 它会重复多次(在本例中为 2)。然后它将给定的统计数据(在本例中为“E”)移动超过 1(移动到“C”(或“E”,如果为负数)),然后将属性设置为该数量。Nones 是为了防止它超出范围。但是,它似乎创建了一个新的“stat”局部变量,并为其赋予了我想要放入属性中的值。我已经尝试返回“stat”并将属性设置为输出,这有效,但这需要它在函数之外,我不知道我将如何更改函数内部给出的属性。这不适用于给定的任务。

谢谢你。

标签: pythonfunctionparametersproperties

解决方案


推荐阅读