python是一种基于类方法编程思想的脚本语言,简单来说就是同Java一样拥有面向对象的主导方向。那么什么是属于面向对象呢?
我对于面向对象的理解,就是将类与对象相结合,形成了多对一的关系,可以使一种类对应许多对象所供使用。
类:
所谓的类,就是用class所定义,然后紧跟类名称的一种代表,为什么说他是一种代表呢,就如同我们想要定义一种狗的大类:
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self,name,age):
"""初始化属性name和age"""
self.name=name
self.age=age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title()+"is now sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title()+"rolled over!")
每只狗都应该有它所对应的名字和年龄,所以我们在类中所定义的名字和年龄,我们就可以称之为是狗类的固有属性,然而小狗可以蹲下,也可以打滚,所以这里的两个sit函数和roll_over函数就是小狗类的两个方法。属性和方法定义完之后,我们就称一个类定义完了。
对象:
但是这里的类 并不能去使用,必须要有对象去使用它,我们在这里可以把类认为仅仅就是一张盖楼房的稿纸图,然而稿纸图可以供工程队造出千千万万所相同的房子供人们使用,但是稿纸却并不是房子,没有办法居住。
my_dog=Dog('zyj',6)
print("dog's name is"+my_dog.name+".")
print("dog's age is"+str(my_dog.age)+".")
当我们需要建房子时,只需调用稿纸,传入我的固有参数,就能对类进行使用,完成对象中所需的要求。
继承,封装,多态:
新类可以继承旧类,就如同说汽车是一个大类,21世纪又发明出了新能源电动汽车,他基本也属于汽车的大类,所以他就可以继续继承原有汽车类的属性和方法。class Newcar(Car)
给类加上括号,括号中的类名称就是旧类,这样引用之后,便可获得旧类的一切属性方法。
又有很多人说,类和对象的相互调用配合,不就是函数的定义与使用么,感觉好像没有什么区别,其实最重要的一点就是类的封装,一个类可以定义私有方法或属性,让调用者不能使用,我们只能调用它,却不能对他内部构造进行解析,如我们直到append()
方法是对列表的元素添加方法,我们却不能对append方法进行内部勘查,是因为他已经被完全封装起来了。
多态的概念主要还是实现于新类和旧类的结合使用,还是上面的例子,电动汽车包含汽车大类的所有属性,可以原封不动的继承使用,但是电动汽车可以充电,可以接受太阳能等,原来的旧 汽车却不可以,所以这是新汽车的独有方法,我们可以在他继承的基础上进行再定义。进而形成了多态!!!