str 형식에서 빌드를 상속하는 새 클래스를 정의하고 문자열 내용을 복제하는 메서드를 만들려고합니다.문자열 형식을 상속하는 새 클래스에서 문자열 값에 액세스하는 방법
새 클래스의 객체에 할당 된 문자열 값에 대한 액세스 권한을 얻으려면 어떻게해야합니까? 당신이 (prettymuch는 결코 유용 어쨌든있는) 전혀 str
에서 상속 할 것이 보이지 않는
str 형식에서 빌드를 상속하는 새 클래스를 정의하고 문자열 내용을 복제하는 메서드를 만들려고합니다.문자열 형식을 상속하는 새 클래스에서 문자열 값에 액세스하는 방법
새 클래스의 객체에 할당 된 문자열 값에 대한 액세스 권한을 얻으려면 어떻게해야합니까? 당신이 (prettymuch는 결코 유용 어쨌든있는) 전혀 str
에서 상속 할 것이 보이지 않는
파이썬의 문자열은 변경할 수 없으므로 한 문자열이 있으면 그 값을 변경할 수 없습니다. int
에서 파생 된 클래스가있는 경우와 거의 같으며 int
값을 변경하는 방법을 추가했습니다.
당신은 물론 새 값을 반환 할 수 있습니다 파이썬에서 당신은 그냥 문자열에 곱셈 연산자를 사용할 수 있다는
가class str_usr(str):
def dup(self):
return self + self # or 2 * self
s = str_usr("hi")
print s # prints hi
print s.dup() # print hihi
:-) 어떤 도움
class str_usr(str):
def __new__(cls, arg):
return str.__new__(cls, arg)
def dub(self):
# How to modify the string value in self ?
self.<attr> = self.<attr> + self.<attr>
감사합니다. 새로운 클래스를 확인하고 사용자가 액세스 문자열이 될 그 속성 중 하나가, 그 이것에 대해주의 또한
class MyString(object):
def __init__(self, string):
self.string = string
def dup(self):
self.string *= 2
입니다 : CamelCaseCapitalization
그래서 사람들이 클래스이다 인식 할 수와
str
및 일부 다른 내장 함수는이를 따르지 않지만 모든 사용자 정의 클래스는이를 수행합니다.__new__
을 정의 할 필요는 없습니다. __init__
을 정의하면 효과가 있습니다. 그들은 당신이 __new__
을 정의한 방식으로 특별히 도움이되지 않습니다.감사 철저한 대답. –
참고 :
>>> s = "foo"
>>> s*2
'foofoo'
아아아, 알로 크는 이미 이것을 언급했음을 알았습니다 ... 음, 어쨌든이 경우 서브 클래 싱은 과장성/난독 화라는 점을 강조하기 위해 대답을 남겨 둘 것입니다. – paprika
OP에 서브 클래 싱이 필요하지 않다고 언급했기 때문에 대답이 좋습니다. 우리는 그가 자신의 하위 클래스로 무엇을하고 싶어하는지 알지 못합니다. –
고마워, 그건 내 질문에 대답했다. 그러나 귀하와 Mike Grahams의 대답을 통해 나는 내 생각이 좋은 일반적인 접근 방식이 아니라는 것을 알 수 있습니다. –