我们有一些变量或其他实例:a ='?'.我们有这样的输入:
f = a(3112).bas(443).ssad(34)
Run Code Online (Sandbox Code Playgroud)
当我们打字
print(f)
Run Code Online (Sandbox Code Playgroud)
输出应该是:
3112a-443bas-34ssad
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些方法来解决这个问题,并找到了有关链接的信息,但我仍然遇到了问题.我不能将类名返回给字符串的brginning.
这,我有:
class A():
def __getattribute__(self, item):
print (str(item))
return super(A, self).__getattribute__(item)
def __init__(self, x):
self.x = x
print (str(x))
def b(self, item):
print (str(item))
return self
def c(self, item):
print (str(item))
return self
def d(self, item):
print (str(item))
return self
A(100).b(200).c(300).d(400)
Run Code Online (Sandbox Code Playgroud)
我的输出:
100
b
200
c
300
d
400
Run Code Online (Sandbox Code Playgroud)
但我无法在一个字符串中连接它.
class A(object):
def __init__(self, integer):
self._strings = ['{}a'.format(integer)]
def __getattr__(self, attrname, *args):
def wrapper(*args, **kwargs):
self._strings.append('{}{}'.format(args[0], attrname))
return self
return wrapper
def __str__(self):
return '-'.join(self._strings)
print(A(100).bas(200).ssad(300))
Run Code Online (Sandbox Code Playgroud)
产量
100a-200bas-300ssad
Run Code Online (Sandbox Code Playgroud)
但是也
print(A(100).egg(200).bacon(300).SPAM(1000))
Run Code Online (Sandbox Code Playgroud)
产量
100a-200egg-300bacon-1000SPAM
Run Code Online (Sandbox Code Playgroud)
class A(object):
def __init__(self, integer):
self._strings = ['{}a'.format(integer)]
def bas(self, integer):
self._strings.append('{}bas'.format(integer))
return self
def ssad(self, integer):
self._strings.append('{}ssad'.format(integer))
return self
def __str__(self):
return '-'.join(self._strings)
print(A(100).b(200).c(300))
Run Code Online (Sandbox Code Playgroud)
产量
100a-200bas-300ssad
Run Code Online (Sandbox Code Playgroud)
您可以重写该__str__方法来定义您的特定输出:
class A():
def __init__(self, a, b="", c="", d=""):
self._a = a
self._b = b
self._c = c
self._d = d
def __str__(self):
return '{}a-{}b-{}c-{}d'.format( self.a, self.b, self.c, self.d )
def b(self, item):
self._b = item
return self
def c(self, item):
self._c = item
return self
def d(self, item):
self._d = item
return self
f = A(100).b(200).c(300).d(400)
print(f) # 100a-200b-300c-400d
Run Code Online (Sandbox Code Playgroud)