关于#python#的问题:self.name=name self.age=age def str(self)

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__方法的返回值。


Python中常用内建方法:__str__,__repr__使用详解_涤生大数据的博客-CSDN博客 因为python中所有类默认继承object类。而object类提供了了很多原始的内建属性和方法,所以用户自定义的类在Python中也会继承这些内建属性。可以使用dir()函数可以查看,虽然python提供了很多内建属性但实际开发中常用的不多。而很多系统提供的内建属性实际开发中用户都需要重写后才会使用。对于python来说,属性或者函数都可以被理解成一个属性常用内建属性:__str_... https://blog.csdn.net/qq_26442553/article/details/82465335

https://www.educative.io/edpresso/what-is-the-str-method-in-python

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就是返回值。