我為內置的“str”類創建了一個帶有擴展方法的類,但我希望用戶能夠使用那些普通的字串內置方法以及我的額外方法。我將如何做到這一點而不必手動撰寫“str”類中已有的每個方法?
class StringMethods:
"""
StringMethods class:
A class similar to the built in python str class
but with extended methods for string analysis, password checking etc.
"""
def __init__(self, string: str) -> None:
self.string = string
def contains(self, char: str) -> bool:
if char in self.string:
return True
return False
def containsany(self, chars: str | list | tuple | set) -> bool:
for char in chars:
if char in self.string:
return True
return False
def hasdigit(self) -> bool: return self.containsany("0123456789")
def haslower(self) -> bool: return self.containsany("abcdefghijklmnopqrstuvwxyz")
def hasupper(self) -> bool: return self.containsany("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
def haswhitespace(self) -> bool: return self.contains(" ")
# I want the user to be able to do the following:
my_string = StringMethods("string123")
print(my_string.hasdigit()) # custom method
print(my_string.upper()) # built-in str method
uj5u.com熱心網友回復:
這是一個繼承自str()您的函式并用您的函式擴展的類。
class StringMethod(str):
"""
StringMethods class:
A class inheriting from the built in python str class
but with extended methods for string analysis, password checking etc.
"""
def contains(self, char: str) -> bool:
return self.__contains__(char)
def containsany(self, chars: str | list | tuple | set) -> bool:
for char in chars:
if char in self.__str__():
return True
return False
def hasdigit(self) -> bool: return self.containsany("0123456789")
def haslower(self) -> bool: return self.containsany("abcdefghijklmnopqrstuvwxyz")
def hasupper(self) -> bool: return self.containsany("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
def haswhitespace(self) -> bool: return self.contains(" ")
請注意,我已經放棄了該__init__()方法str()。使用此類,您可以使用任何內置字串方法以及您自己的特殊方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/523042.html
標籤:Python细绳班级方法
上一篇:如何在TF中用(nk)-dims張量索引n-dims張量?
下一篇:如何讓類繼承其父類的屬性?
