为了更好地构建代码,我想创建这个字符串子类:class StringQuotes(str(:通行证:
把这些函数和变量放在那里:
SINGLE_QUOTE = "'"
def StringMask_QuoteSingle(s: str ) -> str:
return s.replace(SINGLE_QUOTE , SINGLE_QUOTE *2)
def StringSingleQuote(s, quoteChar = SINGLE_QUOTE ):
s = StringMask_QuoteSingle(s)
return StringQuote( s, quoteChar)
def StringQuote(s, quoteChar ):
return quoteChar + s + quoteChar
SingleQuote
应该是静态常量。(为了简单起见,如果它不是只读的,也可以(
在这样做的时候(->请参阅我的问题的答案(我遇到了一些问题,我认为在这里分享这个问题可能很好。我会很高兴有一个审查,并看到你的想法改进。
这就是我想到的:
class StringQuotes(str):
SingleQuote = "'"
def Mask_QuoteSingle( _ : str ) -> str:
return str.replace( _, "'" , "'" *2 )
def SingleQuote( _ , quoteChar = SingleQuote ):
_ = _.Mask_QuoteSingle( )
return StringQuotes.Quote( _ , quoteChar)
def Quote( _ , quoteChar ):
return quoteChar + _ + quoteChar
我选择_
而不是self
,因为它看起来更好。然而,与一个函数相比,对这个self.
的所有需求仍然使视图变得混乱。
问题:
为什么我不能执行
_.replace(...)
?为什么必须是str.replace(_,…(?还有其他方法吗?
。。。关于
str.replace( _, "'")
,我如何使用SingleQuote
?- 仅
replace( SingleQuote,
=>抱怨找不到单引号
=>NameError:名称"DoubleQuote"未定义
replace( _.SingleQuote,
或replace( StringQuotes.SingleQuote,
=>TypeError:必须是str,而不是方法什么为什么SingleQuote是一个方法/函数?我不明白。它是str或变量,但不是函数!Python是否将类变量转换为"property get(("(<-我在Visual Basic中看到过这样的东西(
- 仅
为什么
SingleQuote
在这里起作用:def SingleQuote(_,quoteChar=SingleQuot(:
关于
return StringQuotes.Quote(
我能避免StringQuotes
的重复并写一些类似me.Quote(
的东西吗
以下是"我的"问题的答案:
class StringQuotes(str):
SingleQuote = "'"
def Mask_QuoteSingle( _ : str ) -> str:
return str.replace( _, "'" , "'" *2 )
def SingleQuote( _ , quoteChar = SingleQuote ):
_ = _.Mask_QuoteSingle( )
return StringQuotes.Quote( _ , quoteChar)
def Quote( _ , quoteChar ):
return quoteChar + _ + quoteChar
我选择_
而不是self
,因为它看起来更好。然而,与一个函数相比,对这个self.
的所有需求仍然使视图变得混乱。