python面向对象思想之封装

    python中的面向对象如果有C#/C++基础的话理解起来不难,但是如果只会python中的面向对象,那还是远远不够的。所以博主推荐,一定要掌握一门静态的面向对象的语言,这样的话,才能走得更远。

    面向对象永远绕不开的三大特性 封装 继承 多态。为什么要进行封装,在面向过程的语言中,全局变量会有很多,并且不易维护,改动一点点就能造成毁灭性的打击,所以封装可以让我们编程时易维护,可读性高。

class Person:
    """人类"""

    def __init__(self, name, weight):

        self.name = name
        self.weight = weight

    def __str__(self):

        return "我的名字叫 %s 体重 %.2f 公斤" % (self.name, self.weight)

    def run(self):
        """跑步"""

        print("%s 爱跑步,跑步锻炼身体" % self.name)
        self.weight -= 0.5

    def eat(self):
        """吃东西"""

        print("%s 是吃货,吃完这顿再减肥" % self.name)
        self.weight += 1


xiaoming = Person("小明", 75)

xiaoming.run()
xiaoming.eat()
xiaoming.eat()

print(xiaoming)

  上述代码就是封装的实例,__str__是python中的魔法方法,该方法描述了类的作用。我们一般在__init__里实现对于变量的赋值,在这里强调一点,__init__和静态语言中的new不同,静态语言new一个新的对象的时候,会创建一个内存空间存储对象,并且在没有重写构造函数的前提下,初始化调用构造函数。而python不同,python的__init__方法只是对于变量的初始化,并没有创建,python中也有创建的__new__方法,只是被默认调用。这里在强调一点,self代表的是当前对象的引用,和C++/C#中的this指针是一样的。

猜你喜欢

转载自blog.csdn.net/qq_33324878/article/details/81080647