zoukankan      html  css  js  c++  java
  • python之面向对象与实例属性

    一、三大编程范式

    1.1面向过程编程

    面向对象编程就是将编程当成是做一件事,要按步骤完成,每一步就是一个过程。

    # 打扫房间
    print('开始扫地')
    
    def step_1():
        print('准备扫帚')
    
    def step_2():
        print('打扫房间')
    
    def step_3():
        print('扫完,将扫帚放回原地')
    
    step_1()
    step_2()
    step_3()
    执行结果如下:
    
    开始扫地
    准备扫帚
    打扫房间
    扫完,将扫帚放回原地

    1.2函数编程

    函数式编程:函数式 = 编程语言定义的函数+数学意义的函数;通俗来讲,函数式就是用编程语言去实现数学函数。这种函数内对象是永恒不变的,要么参数是函数,要么返回值是函数,没有for和while循环,所有的循环都由递归去实现,无变量的赋值(即不用变量去保存状态),无赋值即不改变。

    1.3面向对象编程

    面向对象就是将编程当成是一个事物,编程就是设置事物能够做什么事。二

    def personal(name,gender,type):
        #人的动作
        def enroll(personal):
            print('%s去福建上学' %personal['name'])
        def province(personal):
            print('北京大学经济与管理学院录取了[%s]' %personal['type'])
    
        def init(name,gender,type):
            personal1 = {
                "name": name,
                "gender": gender,
                "type": type,
                "enroll": enroll,
                "province":province
            }
            return personal1
        return init(name,gender,type)
    
    p1=personal('czd','male','fzuniv')
    print(p1)
    p1['enroll'](p1)
    p2=personal('dfz','female','bduniv')
    print(p2)
    p2['province'](p2)
    View Code

    二、类与对象的基本理解

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

    对象:就是基于类而创建的一个具体的事物(具体存在的),也是特征和动作整合到一块。

    类与对象的关系:对象都是由类产生的。

    实例化:由类生产对象的过程叫实例化,类实例化的结果就是一个对象,或者叫做一个实例(实例=对象)

    三、类与对象的相关知识

    3.1类相关知识

    python2中有经典类和新式类,python3中都是新式类.

    新式类和经典类声明的最大不同在于,所有新式类必须继承至少一个父类

    #声明一个类
    
    #经典类
    class Chinese:
        '这是一个中国人的类'
        pass
    print(Chinese)
    
    #实例化到底干了什么
    p1=Chinese()      #实例化过程
    print(p1)         #返回一个结果,相当于return
    
    
    #新式类
    class Chinese(object):     #(父类)
        pass
    print(Chinese)

    3.1.1 属性

    类是用来描述一类事物,类的对象指的是这一类事物中的一个个体。

    事物就要有属性,属性分:

        a.数据属性:就是变量

        b.函数属性:就是函数,在面向对象里通常称为方法

    概括:数据属性即变量,类的定义与函数又极其类似,其实可以用函数的作用域来理解类的属性调用。

    3.1.2查看类属性

    定义的类属性到底存放到哪里了?有两种方式查看

         dir(类名):查出的是一个名字列表

        类名.__dict__:查出的是一个字典,key为属性名,value为属性值

    3.2对象相关知识

    class Japanese:
        party='民主党'
        def __init__(self,name,age,gender):
            self.mingzi=name
            self.nianling=age
            self.xingbie=gender
        def sui_di_tu_tan():
            print('朝着....就是一口痰')
        def cha_dui(self):
            print("%s查到了前面" %self.mingzi)
    
    p1=Japanese('dsa',16,'male')            #----->__init__(self,name,age,gender)
    
    print(Japanese.__dict__)
    Japanese.sui_di_tu_tan()
    Japanese.cha_dui(p1)

    3.3类属性的增删改查

    class Chinese:
        party='新民党'
        def __init__(self,name,age,gender):
            self.mingzi=name
            self.nianling=age
            self.xingbie=gender
        def sui_di_tu_tan(self):
            print('%s朝着....就是一口痰' %self.mingzi)
        def cha_dui(self):
            print("%s查到了前面" %self.mingzi)
        def eat_food(self,food):
            print('%s正在吃%s' %(self.mingzi,food))
    
    p1=Chinese('李志强',23,'male')
    p1.sui_di_tu_tan()
    p1.eat_food('大盘鸡')
    
    
    p2=Chinese('caw',25,'female')
    p2.eat_food('佛跳墙')
    
    # ------------查
    # print(Chinese.party)
    
    #--------------改
    Chinese.party='guomindang'
    print(Chinese.party)
    
     #------------增
    Chinese.guojia='中国'
    print(Chinese.guojia)
    
    #  ----------删
    del Chinese.party
    print(Chinese.__dict__)

    3.4实例属性的增删改查

    class Chinese:
        country='China'
        def __init__(self,name):
            self.name=name
        def play_ball(self,name):
            print('%s正在打%s'%(self.name,ball))
    
    p1=Chinese('czd')
    print(p1.__dict__)
    
    # -----------查看
    print(p1.name)
    print(p1.play_ball)
    
    # -----------增加
    p1.age=18
    print(p1.__dict__)
    print(p1.age)
    
    #------------修改
    Chinese.country='日本'
    print(Chinese.country)
    p1.age=20
    print(p1.__dict__)
    print('------>',p1.age)
    
    #------------删除
    del Chinese.country
    print(Chinese.__dict__)
    View Code

    四、对象和实例的补充

    class Chinese:
        country='China'
        l=['a','b']
        def __init__(self,name):
            self.name=name
        def play_ball(self,name):
            print('%s正在打%s'%(self.name,ball))
    
    p1=Chinese('czd')
    print(p1.l)
    
    p1.l=[1,2,3]
    print(Chinese.l)       #改的是p1的,Chinese.l不变
    print(p1.__dict__)
    
    p1.l.append('c')         #在类里面增加
    print(p1.__dict__)
    print(Chinese.l)
    View Code

     

     

     

     

     

     

  • 相关阅读:
    Jzoj3899 逻辑的连通性
    第三十九天 how can I 坚持
    第三十八天 how can I 坚持
    第三十七天 how can I 坚持
    第三十六天 how can I 坚持
    第三十五天 how can I 坚持
    第三十四天 how can I 坚持
    第三十三天 how can I 坚持
    第三十二天 how can I 坚持
    逆向iOS SDK -- _UIImageAtPath 的实现(SDK 5.1)
  • 原文地址:https://www.cnblogs.com/changzhendong/p/11260329.html
Copyright © 2011-2022 走看看