day24基本的面向对象和编程

一.三大编程范式
1.面向过程:
2.函数式编程:
3.面向对象编程:

二.编程进化论:
1.编程最开始就是无组织的,从最简单控制流中按步写指令
2.从上述的指令中提取重复的代码块或者逻辑,组织到一起,便实现代码重用,且代码由无结构走向了结构化,创建程序的过程变得更具有逻辑性
3.定义函数都是独立于函数外定义变量,然后作为参数传递给函数,这就意味着,数据与动作是分离的
4.如果我们把数据和动作内嵌到一个结构,那么我们就有啦一个对象系统(对象就是数据与函数整合到一起的产物)

三.面向对象设计与面向对象编程
1.什么叫类,类是一种数据结构,好比一个模型,改模型用来描述一类事物(事物即数据和动作的结合体),用来产生实例的物体

声明函数:
===============================面向对象编程==========================
    import os
    import sys


    # def dog():
    #     def chishi():
    #         return print('chishi')
    #     def jiao():
    #        return print('jiao')
    #     dog1 = {
    #         'name': 'oulen',
    #         'gender': '母',
    #         'type': '藏獒',
    #         '叫': jiao,
    #         'chishi': chishi
    #     }
    #     return dog1
    # d1=dog()
    # print(d1)


    def dog(name,gender,type):
        # 狗的动作
        def jiao(dog):
            print('一条狗[%s],汪汪汪' % dog['name'])
        def chi_shi(dog):
            print('一条[%s] 正在吃屎' % dog['type'])
        def init(name,gender,type):
            dog1 = {
                'name':name,
                'gender': gender,
                'type': type,
                'jiao':jiao,
                'chi_shi':chi_shi,
            }
            return dog1
        return init(name,gender,type)

    d1=dog('元昊','母','中华田园犬')
    d2=dog('alex','母','藏敖')
    print(d1)
    print(d2)
    d1['jiao'](d1)
    d2['chi_shi'](d2)

    #动作和特征的集合就是一个对象
    #类本身没有任何的意义,只是描述了

    #def 也是面向对象

    #类:吧一类事物的相同的特征和动作整合到一起就是类,类就是一个抽象的概念
    #对象:就是基于类而创建的一个具体的事物(具体的存在),也就是特征和动作整合到一起

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

==============================================面向对象设计==================
    def school(name,addr,type):
        def init(name,addr,type):
            sch={
                'name':name,
                'addr':addr,
                'type':type,
                'kao_shi':kao_shi,
                'zhao_sheng':zhao_sheng
            }
            return sch
        def kao_shi(school):
            print('%s 学校正在考试'%school['name'])
        def zhao_sheng(school):
            print('%s %s 正在招生'%(school['type'],school['name']))
        return init(name,addr,type)
    s1=school('alex','上海','公里学校')
    # print(s1['name'])
    s1['zhao_sheng'](s1)



==============================类相关=======================================
    #类型首字母大写
    # class Chinses:
    #     '这是一个中国人的类'
    #     pass
    # print(Chinses)
    #
    # def test():
    #     print(test)
    # a=test()
    # p1=Chinses()
    # print(p1)
    #
    #
    # #python2 中经典类,
    # class Chinese:
    #     pass
    #
    # #新式类
    # class Chinsesa(object):
    #     pass

    #类中做什么
    #1.属性,用来描述一类事物,类的对象指的是这里类事物中的一个个体
    #1.数据属性:就是变量
    #2.函数属性:就是函数,在面向对象里面称之为方法


    # class Chinese:
    #     '这是一个中国人'
    #     dang='共产'
    #     # def init(self,name,age,gender):
    #     #     dic={
    #     #         'name':name,
    #     #         'age':age,
    #     #         'gender':gender
    #     #     }
    #     #
    #     def __init__(self,name,age,gender):
    #         print('我是初始化函数')
    #         self.mingzi=name
    #         self.nianji=age
    #         self.xingbie=gender
    #
    #         print('我结束啦')
    #     def sui_di_tu_tan(self):
    #         print('朝着墙上就是一口痰%s'%self.mingzi)
    #     def cha_dui(self):
    #         print('插到前面')
    #     def chi_shi(self,food):
    #         print(self)
    #         print('%s 正在吃%s'%(self.mingzi,food))
    # # print(Chinese.dang)
    # # print(Chinese.sui_di_tu_tan())
    # # print(dir(Chinese))
    # # print(Chinese.__dict__)#查看类的属性字典
    # # print(Chinese.__dict__['dang'])
    # # Chinese.__dict__['sui_di_tu_tan']()
    # # Chinese.__dict__['cha_dui']('self')
    # a=Chinese('oulen',18,'female')
    # print(a.__dict__)
    # Chinese.__init__(a,name='oulen1',age=19,gender='female')
    # print(a.__dict__['xingbie'])
    # print(a.mingzi)
    # a.sui_di_tu_tan()
    # ass=Chinese('oulen',18,'female')
    # print(ass.chi_shi('豆浆'))

    #实例化就是类名前面
    #运行就是实例化一个类
    #实例初始化的时候会运行初始化函数
    #风湿理论

    # class Asc():
    #     def __init__(self,a,b):
    #         self.a=a
    #         self.b=b
    #     def addsub(self):
    #         return self.a+self.b
    # class run():
    #     def start(self,x,y):
    #         a=Asc(x,y)
    #         print(a.addsub())
    #
    #
    # m=run()
    # m.start(6,7)


    class ChinsesPeople():
        country='china'
        def __init__(self,name):
            self.name=name
        def pay(self):
            print('在打篮球')
    print(ChinsesPeople.country)
    #修改类属性
    ChinsesPeople.country="Japan"
    print(ChinsesPeople.country)
    p1=ChinsesPeople('oulen')
    print(p1.country)
    #增加类属性
    ChinsesPeople.city='jiangxi'

    #删除
    del ChinsesPeople.country
    #print(p1.country)

    #函数属性
    def eat_food(self,food):
        return print('吃红薯')
    ChinsesPeople.eat=eat_food
    print(ChinsesPeople.__dict__)
    print(p1.eat('红薯'))

    #类属性的修改
    def test(self):
        return print('test')

    ChinsesPeople.pay=test
    p1.pay()



===================================================实例的增删改查===============
    # class Chinse:
    #     country='china'
    #     def __init__(self,name):
    #         self.name=name
    #     def play_ball(self,ball):
    #         print('%s 正在打 %s'%(self.name,ball))
    # p1=Chinse('oulen')
    # print(p1.__dict__)
    # #查看实例属性字典
    # print(p1.name)
    # print(p1.country)
    # p1.play_ball('篮球')
    #
    # #增加实例属性
    # p1.age=19
    # print(p1.__dict__)
    # print(p1.age)
    #
    # #增加实例函数属性
    # #不推荐
    # # def test(self):
    # #     print('我是来自实例的函数属性')
    # # p1.test=test
    # # print(p1.__dict__)
    # # print(p1.test(p1))
    # #违反实例的原则
    #
    # #删除
    # del p1.age
    # print(p1.__dict__)
    #
    # #对象和实例属性


    class Mydata():
        pass

    x=10
    y=123

    Mydata.x=1
    Mydata.y=12
    print(x,y)
    print(Mydata.x,Mydata.y)


=======================================就不行玩不懵你=========================
    # class Chinses:
    #     counrty='china'
    #     def __init__(self,name):
    #         self.name=name
    #     def Plsy_ball(self,ball):
    #         print('%s 在打球%s'%(self.name,ball))
    # p1=Chinses('alex')
    # print(p1.counrty)
    # p1.counrty='riben'
    # print('类的--》》',Chinses.counrty)
    # print('实例的-》》》',p1.counrty)


    #
    # country='中国'
    # class Chinses:
    #     #counrty='china'
    #     def __init__(self,name):
    #         print('---->?')
    #         #name=input('输入用户名')
    #         self.name=name
    #     def Plsy_ball(self,ball):
    #         print('%s 在打球%s'%(self.name,ball))
    # def shi_li_hua():
    #     name=input('输入的')
    #     p1=Chinses(name)
    #     #print(p1.counrty)
    #     print(p1.name)



    # country='中国'
    # class Chinses:
    #     counrty='china'
    #     def __init__(self,name):
    #         print('---->?')
    #         #name=input('输入用户名')
    #         self.name=name
    #         print('--->',country)
    #     def Plsy_ball(self,ball):
    #         print('%s 在打球%s'%(self.name,ball))
    # p1=Chinses('alex')
    # print(Chinses.__dict__)
    # print(Chinses.counrty)

    #遵循.的调用方式,就是在里面去调用



    country='中国'
    class Chinses:
        counrty='china'
        l = ['a', 'b']
        def __init__(self,name):
            print('---->?')
            #name=input('输入用户名')
            self.name=name
            print('--->',country)
        def Plsy_ball(self,ball):
            print('%s 在打球%s'%(self.name,ball))
    p1=Chinses('alex')
    # print(Chinses.__dict__)
    # print(Chinses.counrty)
    # print(p1.l)

    # p1.l=[1,3,4]
    # print(Chinses.l)
    # print(Chinses.__dict__)
    p1.l.append('c')#修改类的属性
    print(p1.__dict__)
    print(Chinses.l)

    #1.找出共有的函数属性
    #定义学校类,老师类,课程类,班级类,学生类

猜你喜欢

转载自blog.csdn.net/qq_37311616/article/details/80603419
今日推荐