面向对象和类
python开发软件的编程思想是:面向对象。
面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的实例。
优点:解决了程序的扩展性。
缺点:可控性差,面向对象的程序一旦开始就由对象之间的交互解决问题,即便是上帝也无法预测最终结果。
面向对象的程序设计并不是软件开发的全部。对于一个软件质量来说,面向对象的程序设计只是用来解决扩展性。
一、类和对象:
属性和方法的结合就是对象,类就是从一对对象中抽象出的属性和函数。
python3中,统一了类型和类,统一为类。
python3中所有的都是新式类;只有python2中才分经典类和新式类。
写一个类,定义一个“人”的类
1 class People: 2 """这是解释文档""" 3 coutry = "china" 4 5 def __init__(self,name,company): 6 self.name = name 7 self.company = company 8 def walk(self): 9 print("%s is walking"%self) 10 11 p1 = People("kyle","Tec") #实例化 12 13 print(People.__bases__) #类的所有父类 14 print(People.__name__) #类的名字(字符串) 15 print(People.__dict__) #类的字典属性,存放了名称空间,寻找调用的属性 16 print(People.__doc__)#类的文档字符串 17 print(People.__module__)#类定义所在的模块 18 19 print(p1.__module__) #实例所在模块 20 print(p1.__class__)#实例对应的类 21 print(p1.__dict__)#实例的名称空间 22 print(p1.__doc__)#实例对应类的描述文档
1 (<class 'object'>,) 2 People 3 {'__module__': '__main__', '__doc__': '这是解释文档', 'coutry': 'china', '__init__': <function People.__init__ at 0x109c5c840>, 'walk': <function People.walk at 0x109c5c7b8>, '__dict__': <attribute '__dict__' of 'People' objects>, '__weakref__': <attribute '__weakref__' of 'People' objects>} 4 这是解释文档 5 __main__ 6 __main__ 7 <class '__main__.People'> 8 {'name': 'kyle', 'company': 'Tec'} 9 这是解释文档
类有两个作用:实例化和属性引用
对象只有一个作用:属性引用
对象/实例本身只有数据属性,但是python的class机制会将类的函数绑定到对象上,称为对象的方法,或者叫绑定方法,绑定方法唯一绑定一个对象,同一个类的方法绑定到不同的对象上,属于不同的方法,内存地址都不会一样