【问题标题】:How do I create a counter within a method of a class [closed]如何在类的方法中创建计数器 [关闭]
【发布时间】:2021-08-24 12:25:46
【问题描述】:

我无法详细说明,因为这是家庭作业,但我需要创建一个具有带计数器的方法的类。当我调用对象时,我需要计数器每增加 1 。但是,每当我使用下面的代码时,计数器只会增加到 1 并停止。

如何让计数器继续增加,如何让计数器保存它停止的数字,如果我再次调用该对象,让它继续增加?

String = 'ABCEDFGABCDEFG'

class MyClass():
   def __init__(self):
     self.counter = 0 

def MyMethod(self, String):
   for letter in String:
     if letter == "A":
       self.counter += 1
     else:
       pass
    return self.counter

MyObject = MyClass()
MyObject.MyMethod()
       

所以在这种情况下,我会寻找 MyObject = 2(计数器编号),但如果我在稍后的代码中再次调用 MyObject,我希望 MyObject = 4

【问题讨论】:

  • 你的代码有什么问题?
  • 计数器的值停在 1,但我需要它停在 2,因为字符串中有两个 A。而且,我需要计数器变量来“记住”它的值,所以如果我再次调用该对象,我会得到 4 的值。不太确定该怎么做
  • 好吧,您目前的代码无法运行,因为您错过了 def 并且您没有创建任何实例。因此,如果您有一些其他代码在您期望结果 2 时为您提供结果 1,则需要将其编辑到您的问题中。
  • MyMethod 方法是否应该在类中?如果是这样,那么缩进是错误的。无论如何,在修复之后(并将String 添加到方法调用中),代码将返回 2 所以我看不到问题...
  • MyMethod 没有正确缩进为MyClass 的方法;这只是一个常规功能。

标签: python-3.x python-class


【解决方案1】:

方法Myclass必须正确缩进:

String = 'ABCEDFGABCDEFG'

class MyClass():
    def __init__(self):
        self.counter = 0 

    def MyMethod(self, String):
        for letter in String:
            if letter == "A":
                self.counter += 1
            else:
                pass
        return self.counter

MyObject = MyClass()
print(MyObject.MyMethod(String))
       

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多