尝试进行任务并且卡在内存地址上。 我已经想出了两种不同的方法来克服这个问题,但两者并不完全存在......
这是我尝试的一个例子(我不认为我允许在线发布我的代码)
class example(object):
def __init__(self,string1,integer1):
self.string1 = string1
self.integer1 = integer1
def __repr__(self):
print('-------------------------')
print('#' + self.integer1 + '' + '-' + ' ' + string1)
print('-------------------------')
I want it to print like this:
-------------------
# 5 - hello
-------------------
如果我使用 repr 方法,我会无法转换' int'反对隐含的意图'错误。 如果我使用 str 方法,则会出现内存错误 如果我尝试使用return,我不能因为它需要返回多行。
我需要保持每个对象变量的类型相同,然后我只需要输出没有内存错误......
希望这个问题不是很难(或者很简单:P)对于python 3中的OOP来说很新。
提前致谢。
答案 0 :(得分:1)
使用+
进行字符串连接时,不能将字符串添加到整数。示例 -
>>> 5 + 'asd'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Python是一种强类型语言,它不会在字符串连接期间自动将整数转换为字符串。
您应该使用一些字符串格式化方法,例如str.format()
。
另外,需要注意的另一件事是你需要从__repr__()
返回值而不是打印它。然后,如果你想在控制台中打印它,你应该调用print(a)
(或Python 2.x中的print a
)。示例 -
class example(object):
def __init__(self,string1,integer1):
self.string1 = string1
self.integer1 = integer1
def __repr__(self):
return ("-------------------------\n"
"#{} - {}\n"
"-------------------------").format(self.integer1,self.string1)
演示 -
>>> class example(object):
... def __init__(self,string1,integer1):
... self.string1 = string1
... self.integer1 = integer1
... def __repr__(self):
... return ("-------------------------\n"
... "#{} - {}\n"
... "-------------------------").format(self.integer1,self.string1)
...
>>> a = example('hello',5)
>>> print(a)
-------------------------
#5 - hello
-------------------------
答案 1 :(得分:1)
让我们看看您尝试的问题。
print('#' + self.integer1 + '' + '-' + ' ' + string1)
看,你在这里想念自己。
其次,这会引发concatenation
错误:
TypeError: cannot concatenate 'str' and 'int' objects
那是因为,self.integer1
是int
,将其投放到str
。或者甚至更好,使用format
第三,你根本不应该打印它。
repr 应返回对象的可打印表示
您正在__repr__
内打印,不应该像这样使用。你宁愿改变它:
class example(object):
def __init__(self,string1,integer1):
self.string1 = string1
self.integer1 = integer1
def __repr__(self):
return '#' + str(self.integer1) + '' + '-' + ' ' + self.string1
print('-------------------------')
print example("hello",5)
print('-------------------------')