g****a 发帖数: 1304 | 1 say I have a user-defined class
class records:
def __init__(self):
self.name = ''
self.gpa = 0.0
student = recards()
student.name = 'John'
student.gpa = 3.0
I want to 'print student' to be ['John',3.0]
what shoud be done? Thanks! |
b*******s 发帖数: 5216 | 2 __str__
【在 g****a 的大作中提到】 : say I have a user-defined class : class records: : def __init__(self): : self.name = '' : self.gpa = 0.0 : student = recards() : student.name = 'John' : student.gpa = 3.0 : I want to 'print student' to be ['John',3.0] : what shoud be done? Thanks!
|
g****a 发帖数: 1304 | 3 __str__好像要把3.0换成str(), 怎么输出float呢?
如果做
def __str__(self):
tmplist=[]
tmplist.append(self.name)
tmplist.append(self.gpa)
print tmplist
return tmplist
print tmplist是对的,输出是['John',3.0]
但是直接 print student就不行。。。。
我才开始看python, 可能我理解的不对,老大能就我那个class具体给个__str__么?
【在 b*******s 的大作中提到】 : __str__
|
b*******s 发帖数: 5216 | 4 def __str__(self):
print self.name + str(self.gpa)
【在 g****a 的大作中提到】 : say I have a user-defined class : class records: : def __init__(self): : self.name = '' : self.gpa = 0.0 : student = recards() : student.name = 'John' : student.gpa = 3.0 : I want to 'print student' to be ['John',3.0] : what shoud be done? Thanks!
|
g****a 发帖数: 1304 | 5 问题是不想变GPA为STR。。。最后输出是exactly ['John',3.0]....
【在 b*******s 的大作中提到】 : def __str__(self): : print self.name + str(self.gpa)
|
L***s 发帖数: 1148 | 6 def __str__(self):
return "['%s',%.1f]" % (self.name, self.gpa)
跟C语言的printf格式化基本一样
当然用str.format也行
比Ruby的string interpolation难看一些
【在 g****a 的大作中提到】 : __str__好像要把3.0换成str(), 怎么输出float呢? : 如果做 : def __str__(self): : tmplist=[] : tmplist.append(self.name) : tmplist.append(self.gpa) : print tmplist : return tmplist : print tmplist是对的,输出是['John',3.0] : 但是直接 print student就不行。。。。
|
b*******s 发帖数: 5216 | 7 #!/usr/bin/env python
class record:
def __init__(self):
self.name = ''
self.gpa = 0.0
def __str__(self):
return '["' + self.name + '",' + str(self.gpa) + "]"
if __name__ == '__main__':
rec = record()
rec.name = "John"
rec.gpa = 3.3
print rec
【在 L***s 的大作中提到】 : def __str__(self): : return "['%s',%.1f]" % (self.name, self.gpa) : 跟C语言的printf格式化基本一样 : 当然用str.format也行 : 比Ruby的string interpolation难看一些
|