关于python的面向对象的疑问,为啥__str__方法不返回函数体里的内容

本文介绍了面向对象编程的基本概念,包括类、属性、行为和对象。通过一个实例展示了如何创建类并实例化对象,解释了为何在调用`__str__`方法时需要接收返回值才能显示输出。同时,文章指出正确调用方式是创建对象后使用`print()`函数输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习之前你得理解以下含义。

(1)什么是类(class)

        类是用来描述具有相同属性和方法对象得集合。例如人类,动物类等;类可以看作是属性加上行为。

(2)什么是属性

        属性是该类的特征。例如人类都有肤色,头发等等。

(3)什么是行为

行为就是类里面的方法。例如人类都会吃饭,睡觉,说话等等。

(4 )什么是对象

世间万物皆为对象,对象是类的实例。

例如下面这个例子,初学者可能会和我一样,为什么调用了people 没有返回任何信息呢?

class people:
    """描述一个人类"""
    language = "chinese"  # 类属性


    def __init__(self,name):  #构造函数,初始化数据
        self.name=name   #实例属性:实例对象自己私有。

    def __str__(self):
        return "我叫{},我说{}".format(self.name, people.language)


if __name__ == "__main__":
    people('张三')
    

why?__str__不是内置方法,可以在类被调用的时候,自动执行这块的代码吗?

其实这块我们只是调用了这个类里面的__str__(),但是该方法有返回值,我们首先得用参数接收这个返回值,就可以直接打印出来。不妨你也来试一试!

class people:
    """描述一个人类"""
    language = "chinese"  # 类属性

    def __init__(self, name):  # 构造函数,初始化数据
        self.name = name  # 实例属性:实例对象自己私有。

    def __str__(self):
        return "我叫{},我说{}".format(self.name, people.language)


if __name__ == "__main__":
   test = people('张三')
   print(test)






-------------------------------------------------------------------------------------

"C:\Program Files\Python38\python.exe" C:/Users/1147/PycharmProjects/unittest_project/Scripts/面向对象.py
我叫张三,我说chinese

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值