class Student:
def int(self,name,age):
self.name=name
self.age=age
def str(self):
return('我的名字是{0}'.format(self.name,self.age))
stu=Student('张三',20)
print(dir(stu))
print(stu)
问下为什么这里要重写str方法,代替了哪个方法?还有这里为什么要用return而不是print,谢谢
class Student:
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self):
return('我的名字是{0}'.format(self.name,self.age))
stu=Student('张三',20)
print(dir(stu))
print(stu)
我想你贴的代码应该长这样吧。
在python中,print其实是sys.stdout.write()的方法,而sys.stdout.write()的参数必须是字符串,所以类对象需要被表示为一个字符串。这里__str__方法正是将对象的内容表示为一个字符串的方法,它是类对象的内建方法,可以通过print(stu)和str(stu)来调用__str__方法。
如果不重写__str__方法,print(stu)的时候会默认调用__repr__方法,输出描述对象地址的字符串。如果重写了__str__方法就不会调用__repr__方法。这里必须要有return,因为print(stu)输出的是__str__方法的返回值。
class Student:
defint(self,name,age):
self.name=name
self.age=age
defstr(self):
return('我的名字是{0}'.format(self.name,self.age))
stu=Student('张三',20)
print(dir(stu))
print(stu)
问下为什么这里要重写str方法,以及对象地址为什么就不输出了?谢谢
print和return都可以
就是你用stu.__str__的时候会输出return里面的东西。print就是直接输出,return就是返回值。