Python笔记_第三篇_面向对象_3.重写(overriding)和重载(overloading)

1. 重写

  overirding:就是将函数重新定义一遍。

  格式:

  __str__( ):在调用print打印对象时自动调用,是给用户用的,是一个描述对象的方法。

  __repr__( ):给机器用的,在Python解释器或者在cmd的黑屏终端里面输入,注意在没有str时,且有repr,str = repr,其实本事就是打印类本身想要实现的属性。

  举例说明:

class Person(object):
    def __init__(self,name,age,height,weight):  
        self.name = name
        self.age = age
        self.height = height
        self.weight = weight
    def __str__(self):
        # return "这里是__str__"
        return "%s-%d-%d-%d" %(self.name,self.age,self.height,self.weight)
    # def __repr__(self):
    #     # return "这里是__str__"
    #     return "%s-%d-%d-%d" %(self.name,self.age,self.height,self.weight)


per = Person("hanmeimei",20,170,55)
print(per)
print(per.__str__())  # 其实不写入类体重,这里也是可以直接打印的。
# hanmeimei-20-170-55
# hanmeimei-20-170-55

  优点:当一个对象的属性值很多的时候,兵器都需要打印,重写__str__方法后,简化了代码。  

2. 重载

  overloading:就是一个类当中可以有一个以上的方法具有相同名称。

  举例说明:

class Person(object):
    def __init__(self,name,age,height,weight):
        self.name = name
        self.age = age
        self.height = height
        self.weight = weight

    def run(self):
        print("run1")

    def run(self):
        print("run2")

per = Person("hanmeimei",20,170,55)
per.run()
# 返回值:run2

  其实我们发现Python并不需要重载。在C#语言中,重载时两个相同的函数名,且参数类型不一样,类似于:

  run(int b)

  run(long b)

  这种函数时重载的现象。但是python里面的重载其实就是识别最后一个函数的意思。

猜你喜欢

转载自www.cnblogs.com/noah0532/p/10858370.html