Python3中__str__ "魔法"方法理解

Python3中只要类中的方法名格式为:__方法名__ 都是为特殊的方法,可以称为"魔法"方法

当我们在代码中调用了print(类),就会调用__str__方法里面的值

例如如下代码:

class Cat:
    """定义一个Cat类"""
    #初始化对象
    def __init__(self,new_name,new_age):
        self.name = new_name
        self.age = new_age
    
    def __str__(self):
        return "%s的年龄是:%d"%(self.name,self.age)
    
    #方法
    def eat(self):
        print("%s正在吃东西......"%self.name)
    def drink(self):
        print("%s正在喝饮料......"%self.name)
    def sleep(self):
        print("%s正在睡觉觉......"%self.name)
tom = Cat("汤姆",40)
lanmao = Cat("蓝猫",10)

print(tom)
print(lanmao) 

 

运行结果:

 

汤姆的年龄是:40
蓝猫的年龄是:10

当我们将__str__方法注释后,再运行代码对比下输出内容如下:

<__main__.Cat object at 0x7fbc0ca62198>
<__main__.Cat object at 0x7fbc0ca62240>

打印的是系统默认的表达格式.

总结:

当我们在调用print(类)时,系统会先查找__str__或者__repr__方法,如果有这两种方法的一个,则打印方法返回的值.

                                                                                                                                                                                                                                                                                --KAI

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: __str__ 方法Python 的特殊方法,用于返回一个字符串表示当前对象。通常,当我们使用 print 函数打印对象时,会自动调用该对象的 __str__ 方法。例如: ``` class MyClass: def __init__(self, name): self.name = name def __str__(self): return self.name obj = MyClass("Hello") print(obj) # 输出 "Hello" ``` 在这个例子,我们定义了一个类 MyClass,它有一个名为 name 的属性。我们在 __str__ 方法返回该属性的值,因此当我们使用 print 函数打印 obj 时,它会输出 "Hello"。 ### 回答2: `def __str__(self):` 是 Python 一个特殊的魔法方法(magic method),用于返回一个对象的字符串表示。当我们打印一个对象或者将其转换为字符串时,就会调用`__str__`方法。 通过在自定义类创建`__str__`方法,我们可以自定义对象的字符串表示,以便更好地理解对象的内容。 __str__方法通常用于返回一个可读性较高的字符串,来描述对象的状态或属性。这个字符串可以是对该对象的描述、内部属性的摘要,或者是一个包含关键信息的字符串。 例如,我们有一个名为"Person"的类,它有两个属性:name(姓名)和age(年龄)。我们可以通过编写`__str__`方法,返回一个包含姓名和年龄的字符串表示: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f"姓名:{self.name},年龄:{self.age}" ``` 当我们创建一个`Person`对象并打印它时: ```python person = Person("张三", 25) print(person) ``` 输出的结果将是: ``` 姓名:张三,年龄:25 ``` 通过自定义`__str__`方法,我们可以使对象的字符串表示更具有可读性,以便在调试或输出时更容易理解对象的内容。 ### 回答3: `def __str__(self)`是Python的一个特殊方法,用于定义类的实例对象在被打印或转换为字符串时的行为。当我们使用`print()`函数打印一个对象或者将其转换为字符串时,会自动调用这个方法来返回一个字符串表示。 在编写类时,我们可以通过自定义`__str__(self)`方法来指定对象的字符串表示形式,以使其更加有意义和可读性。这个方法应该返回一个字符串,用于描述对象的特征或状态。 例如,假设我们有一个名为`Person`的类,它有两个属性:姓名和年龄。我们可以在这个类定义`__str__(self)`方法,如下所示: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f"姓名:{self.name},年龄:{self.age}" ``` 这样一来,当我们打印`Person`类的实例对象时,就会输出我们定义的字符串形式,例如: ```python p = Person("小明", 18) print(p) ``` 输出: ``` 姓名:小明,年龄:18 ``` 通过自定义`__str__(self)`方法,我们可以定制类对象在被打印或转换为字符串时的格式,使其更符合我们的需求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值