Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我在写A,E,I,O,U的计数_Python_Oop - Fatal编程技术网

Python 我在写A,E,I,O,U的计数

Python 我在写A,E,I,O,U的计数,python,oop,Python,Oop,当我运行此代码时: class Check(): def __init__(self, string): self.string = string self.open() def open(self): self.checks() def checks(self): a = 0 for letter in self.string: if letter == &quo

当我运行此代码时:

class Check():
    def __init__(self, string):
        self.string = string
        self.open()

    def open(self):
        self.checks()

    def checks(self):
        a = 0
        for letter in self.string:
            if letter == "a" or letter == "A" or letter == "E" or letter == "e" or letter == "U" or letter == "u" or letter == "O" or letter == "o" or letter == "I" or letter == "i":
                a = a+1
        return a

a = Check("Alfoo")
print(a)
我得到:

<__main__.Check object at 0x00000257F224A978>

首先,无需从构造函数中调用
self.open()
,然后从
open()
中检查(),您可以将其删除

checks()
函数中,迭代
self.string
中的每个
字母
,如果字母包含
aeiou
,则在变量
a
中继续递增1,然后只
返回a

class Check:
    def __init__(self, string):
        self.string = string

    def checks(self):
        a = sum(1 for letter in self.string.lower() if letter in 'aeiou')
        return a


a = Check("Alfoo")
print(a.checks())

让我们假设open()成员函数将来会很有用——也许它会在运行checks()之后得到更多的代码来执行某些操作

下面是代码的操作方式:

  • 创建检查实例并传入“Alfoo”
  • \uuuu init\uuuu
    设置成员变量并调用
    open()
  • open()
    调用
    check()
  • check()
    对AEIOU进行计数并返回计数(变量a)
  • open()
    中调用
    check()
    不会分配返回值,因此该值丢失
  • \uuuu init\uuuu()
    调用
    open()
    不会返回值,因此
    \uuuuu init\uuuu()
    已完成
  • 然后打印Check的实例
  • 如果我正确解释了您试图执行的操作,我会将代码修改为:

    类检查():
    定义初始化(self,字符串):
    #集合成员变量
    self.string=string
    self.count=无
    #调用成员函数以正确启动实例
    self.open()
    #成员函数来“打开”某些内容
    def打开(自):
    如果self.count为无:
    自我检查
    #成员变量计数的访问器(只读)函数
    def get_计数(自身):
    #我们要确保计数设置为一个数字
    如果self.count为无:
    自我检查
    返回自计数
    #执行验证并设置成员变量
    #到目前为止,只需设置count成员变量
    def检查(自我):
    self.count=0
    对于self.string中的字母:
    如果字母==“a”或字母==“a”或字母==“E”或字母==“E”或字母==“U”或字母==“U”或字母==“O”或字母==“O”或字母==“I”或字母==“I”:
    self.count+=1
    a=支票(“Alfoo”)
    打印(a.获取计数()
    
    你的意思是
    a=Check(“Alfoo”).checks()
    ?使用类似乎有些过分。我如何才能使它成为a=Check(“Alfoo”)呢?这是否回答了你的问题?摆脱该类,进行
    def检查(string)
    并调用
    a=checks(“Alfoo”)
    。类是完全没有必要的。您可以消除open函数和对_init__;()中self.open()的调用。。。这会更简单。checks也可以
    返回sum(如果'AEIOUaeiou'中的l为l,则self.string中的l为1)
    ,但这一点差别不大。虽然这个代码片段可能是解决方案,但确实有助于提高您的帖子质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因。我同意您的看法。答案应该有一些解释给读者。另外,很抱歉,因为我对回答堆栈溢出问题还不熟悉,我将在将来对我的代码进行某种解释,并感谢您指出。TypeError:get_count()接受0个位置参数,但1被指定为get_count()的参数-我的错误。我编辑了上面的代码。你忘记了函数get\u count中的self