函数式编程vs面向对象编程
类:有相同功能与属性的一类东西
对象:是类的具体体现,具体到一个
优势: 类是一组相似功能的集合,让我代码的组织结构更加清晰规范
用面向对象设计程序,累就是一个公共模板,对象去操作使用这个公共模板
类的结构:
class Human: mid='有思想' language='会使用语言' shape_list=['四肢','五官','头'] 静态属性 def work(self): print('人类都会工作') def eat(self): print('人类都要吃饭') 方法 print(Human.__dict__)
Human.body_hair='体毛' 增 del Human.language 删 Human.mind='无脑' 改 print(Human.shape_list) 查
方法:代码中除去(静态方法,类方法),一般不用类名去执行类中方法
obj=Human() obj1=Human() obj2=Human() print(obj,obj1,obj2)实例化过程中,实例化一个对象就产生一个地址
实例化对象:类名+() 在内存中开辟了一个空间
实例化对象(Human())发生3步:
1在内存中开辟一个对象内存
2自动执行__init__方法,并将对象空间传给self
3执行__init__的代码给对象空间封装属性
class Human: mind='有思想' language='会使用语言' shape_list=['四肢','五官','头'] def __init__(self): print(666) print(self) def work(self): print('人类都会工作') def eat(self): print('人类都要吃饭') obj=Human()
class Human: mind='有思想' language='会使用语言' shape_list=['四肢','五官','头'] def __init__(self,name,sex,age): 实参 self.n=name self.s=sex self.a=age def work(self): print('人类都会工作') def eat(self): print('人类都要吃饭') obj=Human('alex','男',18) 形参 obj.n='lange' 改 print(obj.__dict__) 查看
对象的角度操作类,对象:
1,对象查看对象空间的所有属性:print(obj__dict__)
2,对象操作对象空间的属性:
obj.height=180 增 print(obj.__dict__) 查 del obj.n 删 obj.s='男' 改 print(obj.a) 查
3,对象查看类中的静态属性,只能查看
print(obj.mind)
4,对象操作类的方法:
obj=Human('alex','男',18) cock=Human('小强',27,'男') 只要对象执行类中的方法,就会将对象空间自动创给方法的第一个参数 print(cock.__dict__)
self类中所有的方法(类方法,静态方法) 的第一个参数都会默认接收对象空间,为了方便区分,就把第一个参数约定俗称为self
一个类可以实例化多个对象
obj=Human('小强',27,'男') obj1=Human('文静',18,'女') obj2=Human('龙哥',18,'男') print(obj.__dict__) print(obj1.__dict__) print(obj2.__dict__)