python面向对象---用函数实现面向对象原理

类的定义:一个抽象的概念,保存一些共有的属性和特征
#对象:对象代表具体事物的特征功能,是类的实例

#面向对象程序设计 通过函数实现面向对象设计
def dog(name,type,gender):
    def jiao(dog1):
        print("你看[%s]狗再叫" % dog1["name"])
    #函数的局部作用域
    def sleeping(dog1):
        print("你看[%s]的类别" %dog1["type"])

    #初始化参数
    def init(name,type,gender):
        dog2={
            "name":name,
            "type":type,
            "gender":gender,
            "jiao":jiao,#将函数名作为键值传入
            "sleeping":sleeping
        }
        return dog2
    return init(name,type,gender)

d1=dog("小黄","中华田园犬","")
d1['jiao'](d1)





#类:把一类事物相同的特征和动作整合到一起就是类,类是一个抽象的概念

#对象:就是基于类创建的一个具体事物,一个具体的事物具体的存在,,也是特征和动作整合到一块
#对象是由类产生的, 实例化:由类产生对象的过程叫做实例化
#

#学校类
#特征: name addres type
#动作: 考试,招生,开除学生

class School:
#school1={"name":"oldboy","addres":"雁江","type":"私立学校"}

def __init__(self,name,addres,types):
self.name=name
self.addres=addres
self.types=types


def test(self):
print("%s学校正在考试" % self.name)


def join_student(self):
print("%s 正在招生" %self.types)


bob = School("oldboy","阳江","私立学校")
print(bob.__dict__)
bob.test()
bob.join_student()



#通过函数实现面向对象设计
def school(name,addres,type):

def init(name,addres,type):
school1={"name":name,
"addres":addres,
"type":type,
"test":test,
"join_student":join_student}
return school1

def test(school_only):
print("%s 学校在考试" %school_only['name'])


def join_student(school_only):
print("%s 招生中" %school_only['type'])

return init(name,addres,type)

s1=school("oldboy","中国",'培训学校')
print(s1,s1['name'])
s1['test'](s1)
如果我失败了,至少我尝试过,不会因为痛失机会而后悔
原文地址:https://www.cnblogs.com/tangcode/p/11252030.html