函数式编程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__)

 

posted @ 2019-01-23 17:23  weize111  阅读(685)  评论(0编辑  收藏  举报