【问题标题】:How to write a method like islower , isupper?如何编写 islower 、 isupper 之类的方法?
【发布时间】:2018-03-19 23:55:54
【问题描述】:

我想写一个我可以使用字符串的方法,就像我们使用"word".isupper return False, "word".islower return True,所以我想定义一个类并想像@一样使用987654324@

所以如果我有一个特殊字符列表:

special=["&","*",")("]

而且我希望如果我有一个词,我可以检查像 ")(".method() 并且它返回 True,就像我们使用 "string".islower() 返回 True 一样

我知道我可以用简单的循环和in 运算符来做到这一点,但我想知道我怎么能像")(".method() 那样做

我尝试的是错误的:

class Lower:

    def check(self,x):
        for i in lower:
            if x==i:
                return True

check1=Lower()

check1.check()

print(check1.check(special,")("))

【问题讨论】:

  • buggy 是轻描淡写的......你到底有什么问题?
  • 你需要继承str
  • 我看不出有什么理由必须是方法而不是函数。这是一项要求还是您的决定?

标签: python python-2.7 python-3.x class methods


【解决方案1】:

你可以像这样写一个函数来做你想做的事:

import string

special_set = set(string.punctuation)

def isspecial(s):
    return all(c in special_set for c in s)

print(isspecial(")("))
print(isspecial(")(*)(&)(*&)*&"))
print(isspecial(")(*)(&)(*&)*&x"))

这将按预期输出:

True
True
False

请注意,我使用string.punctuation 来构建“特殊字符”集。如果你愿意,你可以手动定义这个集合。

真的,这是 Python 风格的方式来做你想做的事 - 没有理由必须有一个方法来做这件事。如果你真的坚持,你可以看看this question 了解更多信息,但要注意它会变得乱七八糟。

【讨论】:

    猜你喜欢
    • 2011-05-22
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多