【问题标题】:how to bring the list I created in class as a parameter in new function如何将我在类中创建的列表作为新函数中的参数
【发布时间】:2018-06-25 21:14:33
【问题描述】:

我想说我的英语是第二语言,对于给阅读或理解我的帖子带来的任何不便,我深表歉意。

我先解释一下我生成了什么样的代码, 所以我使用下面的代码创建了我的类函数

class Histogram:
  def __init__(self, range , max_mark):
    self.__range = range 
    self.__max_mark = max_mark
    self.__occurrence_list = [0] * self.__range
  def get_range(self):
    return self.__range
  def set_range(self, value):
    self.__range = value
  def get_max_mark(self):
    return self.__max_mark
  def set_max_mark(self, value):
    self.__max_mark = value
  def get_occurrence_list(self):
    return self.__occurrence_list
  def append_marks(self, value):
    if value > self.__max_mark:
        return 'value should be bigger than max mark'
    else:
        new = self.__occurrence_list[value] += 1

我想要做的是使用我从下面的代码中得到的列表打印一个新的字符串。

例如, 如果我把

a1 = Histogram(10, 9)
a1.append_marks(8)
print(a1.get_occurrence_list())

结果是

[0, 0, 0, 0, 0, 0, 0, 0, 1, 0]

现在,我想创建一个字符串来显示索引号以及它们有多少个数字。

例如, 给定的列表在每个索引中显示 0,但在索引 8 中不显示

所以我想创建..

0: 0
1: 0
2: 0
...
8: 1
9: 0

类似的东西。

所以现在我有一个问题,

但如果我引入新函数,我会说“get_string()”并使用两个参数,即“self”和其他值。

我怎样才能回忆起从上一个到新功能的列表? 之后的代码是什么

def get_string(self, other):

如果我想创建类似上面的字符串?

【问题讨论】:

  • "我怎样才能回忆起我从 LAST NEW 函数?...如果我想创建类似上面字符串的东西?" 你能,请详细说明一下......这是最后一个功能,这是新功能......有点明确可能会有所帮助......

标签: python list function class parameters


【解决方案1】:

您可能需要重新访问方法,append_marks(self, value)。理想情况下,该方法应该是:

def append_marks(self, value):
    if value > self.__max_mark:
        return 'value should be bigger than max mark'
    else:
        # YOU SHOULDN'T DO new = self.__occurrence_list[value] += 1 
        # RATHER JUST DO: self.__occurrence_list[value] += 1
        self.__occurrence_list[value] += 1
        # new = self.__occurrence_list[value] += 1 #<= WITHOUT new =...

get_string() 方法可以这样实现:

def get_string(self):
    outString   = ""
    if self.__occurrence_list:
        for key, val in enumerate(self.__occurrence_list):
            outString += str(key) + ":" + str(val)  + "\n"
    return outString

因此您的班级可能看起来像这样:

class Histogram:
    def __init__(self, range , max_mark):
        self.__range = range
        self.__max_mark = max_mark
        self.__occurrence_list = [0] * self.__range

    def get_range(self):
        return self.__range

    def set_range(self, value):
        self.__range = value

    def get_max_mark(self):
        return self.__max_mark

    def set_max_mark(self, value):
        self.__max_mark = value

    def get_occurrence_list(self):
        return self.__occurrence_list

    def append_marks(self, value):
        if value > self.__max_mark:
            return 'value should be bigger than max mark'
        else:
            self.__occurrence_list[value] += 1

    def get_string(self):
        outString   = ""
        if self.__occurrence_list:
            for key, val in enumerate(self.__occurrence_list):
                outString += str(key) + ":" + str(val)  + "\n"
        return outString




a1  = Histogram(10, 9)
a1.append_marks(8)
a1.append_marks(8)
a1.append_marks(8)
a1.append_marks(8)
a1.append_marks(8)
a1.append_marks(8)

print(a1.get_occurrence_list())
print(a1.get_string())

【讨论】:

    【解决方案2】:

    您的对象的属性将在您的新方法中可用。下面的代码应该按照您的描述打印您的列表。

    for index, item in self.__occurrence_list.enumerate():
        print (str(index) + ':' + str(item))
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 2016-03-04
      • 2016-05-22
      相关资源
      最近更新 更多