python面向对象-类的常见内置方法

在python中,类有很多内置方法,且都有 共同特点,方法 名字前后 各有两个下划线__名字__,如之前的__init__()方法,所以在我们自定义方法时,不要起这样的方法名,避免和类的内置方法冲突

__new__()

类构造方法,用于产生实例化对象,可以控制对象的产生过程,必须返回一个对象。在单例模式时会用到(类只能实例化一个对象)
https://www.malaoshi.top/show_1EF4H2ziJXlN.html

__init__()

参见链接:
http://www.malaoshi.top/show_1EF2CN6lpDXi.html
继承行为参见链接:
http://www.malaoshi.top/show_1EF2CulE08sX.html

__str__()

该方法返回字符串,实现该方法后,当执行str(实例),print(实例)时,显示该方法返回的字符串

在没有实现该方法时,代码如下:

class Phone:
    def __init__(self,name):
        self.__name=name

huawei=Phone("华为")
print(huawei)

结果如下:

<__main__.Phone object at 0x00A735B0>

显示是地址信息。

修改代码,增加__str__()方法,如下:

#coding=utf-8

class Phone:
    def __init__(self,name):
        self.__name=name

    def __str__(self):
        return "name=%s"%(self.__name)

huawei=Phone("华为")
#直接打印实例
print(huawei)

#将实例转换字符串
s=str(huawei)
print(s)

结果如下:

name=华为
name=华为

显示的内容是__str__()方法返回的字符串

应用场景

在直接打印datetime对象时,显示的是时间,就是通过__str___()实现的

import datetime
now=datetime.datetime.today()
print(type(now))
print(now)

__repr__()

功能同__str__()方法,但有一些区别

  1. 没有定义__str__()方法,但定义__repr__()方法了,那么当执行str(实例),print(实例)时,调用的是__repr__()方法
  2. 用于其他的环境中,比如交互环境执行>>>实例敲回车时,执行的是__repr__()方法

感谢文章:
https://www.cnblogs.com/pythonkids/p/7695807.html


原文出处:/show_1EF2CzrcyUtZ.html