面向对象
面向对象与面向过程编程相比的两个特点
1,减少代码的重用性。
2,增强代码的可读性。
面向对象编程的优点
1.是一类相似功能函数的集合,使你的代码更清晰化,更合理化.
2.面向对象,要拥有上帝的视角看问题,对象就从具体的模板实例化出来.
类的结构
class 是关键字与def用法相同,定义一个类。
Human是此类的类名,类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头。
类的结构从大方向来说就分为两部分:
静态变量。
动态方法
类名操作静态属性
第一种,查看类中的所有内容:类名.__dict__方式。
第二种,万能的点.可以通过点出来你 要的参数或者方法
动态操作
前提:除了两个特殊方法:静态方法,类方法之外,一般不会通过类名操作一个类中的方法。
class Human:
"""
此类主要是构建人类
"""
mind = '有思想' # 第一部分:静态属性 属性 静态变量 静态字段
dic = {}
l1 = []
def work(self): # 第二部分:方法 函数 动态属性
# print(self)
print('人类会工作')
def tools(self):
print('人类会使用工具')
Human.work(111)
Human.tools(111)
下面可以做,但不用。
Human.__dict__['work'](111)
对象介绍
对象是从类中出来的,只要是类名加上(),这就是一个实例化过程,这个就会实例化一个对象。
例化一个对象总共发生了三件事
1,在内存中开辟了一个对象空间。
2,自动执行类中的__init__方法,并将这个对象空间(内存地址)传给了__init__方法的第一个位置参数self。
3,在__init__ 方法中通过self给对象空间添加属性。
对象操作类中的方法
类中的方法一般都是通过对象执行的(出去类方法,静态方法外),并且对象执行这些方法都会自动将对象空间传给方法中的第一个参数self.
self 是什么?
self其实就是类中方法(函数)的第一个位置参数,只不过解释器会自动将调用这个函数的对象传给self。所以咱们把类中的方法的第一个参数约定俗成设置成self, 代表这个就是对象。