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指针是一样的。