• Python学习第十五课——类的基本思想(实例化对象,类对象)


    类的基本思想

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

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

    对象写法

    # 对象写法
    def school(name, addr, type): # 对象
        def __init__(name, addr, type): # 初始化
            sch = {
                'name': name,
                'addr': addr,
                'type': type,
                'kaoshi': kao_shi,
                'zhaosheng': 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('Hs', 'henan', '私立学校')
    print(s1['name'])
    s1['zhaosheng'](s1)
    # 类的相关属性
    
    class Chinese:  #
        tuanyuan='团员'  # 属性
    
        def sui_di_tu_tan(): # 函数
            print('随地吐痰')
    
    print(Chinese.tuanyuan) # 团员
    Chinese.sui_di_tu_tan() # 随地吐痰
    
    # print(dir(Chinese))
    # print(Chinese.__dict__) # 查看属性字典
    
    print(Chinese.__dict__['tuanyuan']) # 团员
    Chinese.__dict__['sui_di_tu_tan']() # 随地吐痰

    类的写法

    # 类写法
    class School(object):
        def __init__(self,name, addr, type):
            self.name=name
            self.addr=addr
            self.type=type
    
        def kao_shi(self):
            print('%s 学生正在考试' %(self.name))
    
        def zhao_sheng(self):
            print('%s %s 正在招生' % (self.type, self.name))
    
    s1 = School('Hs', 'henan', '私立学校') # 此时直接运行了__init__()函数
    s2 = School('清华', '北京', '公立学校')
    print(s1.__dict__)
    
    s1.zhao_sheng()
    s2.zhao_sheng()
    s1.kao_shi()
    s2.kao_shi()
    class Chinese:  #
        tuanyuan='团员'  # 属性
        def __init__(self,name,age,sex):
            self.mingzi=name
            self.nianling=age
            self.xingbie=sex
    
    
        def sui_di_tu_tan(self): # 函数
            print('%s 随地吐痰' %(self.mingzi))
    
        def cha_dui(self):  # 函数
            print('%s 插队' % (self.mingzi))
    
    c1=Chinese('meimei',24,'female')
    c2=Chinese('haohao',24,'male')
    
    print(c1.__dict__)
    print(c2.__dict__)
    
    c1.sui_di_tu_tan()
    c2.cha_dui()

     

     类的增删查改

    # 类的增删改查
    
    class Chinese:
        country = 'China'
    
        def __init__(self, name):
            self.name = name
    
        def play_baskctball(self, ball):
            print('%s 正在打 %s ' % (self.name))
    
    
    # 查看
    print(Chinese.country)  # China
    
    # 修改
    
    Chinese.country = 'huayi'
    print(Chinese.country)  # huayi
    p1=Chinese('hanhan')
    print(p1.__dict__)
    print(p1.country)
    
    #增加
    
    Chinese.tuanyuan='团员'
    print(Chinese.tuanyuan) # 团员
    
    # 删除
    
    del Chinese.tuanyuan
    del Chinese.country
    
    print(Chinese.__dict__)
    print(Chinese.country)
    
    # 增加函数
    
    def eat_food(self,food):
    
        self.food=food
        print('吃%s'%(self.food))
    Chinese.eat=eat_food
    print(Chinese.__dict__)
    
    p1.eat('苹果')  # 吃苹果

     

    实例属性的增删改查

    # 实例属性的增删改查
    
    class Chinese:
        country = 'China'
    
        def __init__(self, name):
            self.name = name
    
        def play_baskctball(self, ball):
            print('%s 正在打 %s ' % (self.name, ball))
    
    
    c1 = Chinese('hanhan')
    print(c1.__dict__)
    
    # 查看
    print(c1.name)  # hanhan
    
    print(c1.play_baskctball)
    
    # 增加
    
    c1.age = 18
    print(c1.__dict__)  # {'name': 'hanhan', 'age': 18}
    print(c1.age)  # 18
    
    
    def test(self):
        print('我是来自实例的函数属性')
    
    
    c1.test = test
    print(c1.__dict__)
    c1.test(c1)  # 我是来自实例的函数属性
    
    # 修改
    
    c1.age=19
    print(c1.__dict__)
    
    print(c1.age) # 19
    
    # 删除
    del c1.age
    print(c1.__dict__) #{'name': 'hanhan', 'test': <function test at 0x030ABC00>}

     实例属性和类属性混合使用

    class Chinese:
        country = 'China'
    
        def __init__(self, name):
            self.name = name
    
        def play_baskctball(self, ball):
            print('%s 正在打 %s ' % (self.name, ball))
    
    c1 = Chinese('hanhan')
    print(c1.country) # China
    
    c1.country='中国'
    print('类的---->',Chinese.country) # 类的----> China
    print('实例的--->',c1.country) # 实例的---> 中国

    插曲:

    country='China'
    class Chinese:
        def __init__(self, name): # 只要一实例化对象 立刻执行该方法
            self.name = name
            print('--->',country) # ---> China
        def play_baskctball(self, ball):
            print('%s 正在打 %s ' % (self.name, ball))
    
    
    c1 = Chinese('hanhan') #---> China  此时 可以找到类以外的变量
    
    # print(c1.country) # 报错

    插曲2:

    country='China'
    class Chinese:
        country='中国'
        def __init__(self, name): # 只要一实例化对象 立刻执行该方法
            self.name = name
            print('--->',country) # ---> China
        def play_baskctball(self, ball):
            print('%s 正在打 %s ' % (self.name, ball))
    
    
    c1 = Chinese('hanhan') # 此时 还是 ---> China 而不是中国
    print(c1.country) # 此时才为中国
  • 相关阅读:
    CodeIgniter 2.X 于 PHP5.6 兼容错误
    解决 TextMate 2 无法安装 Emmet 插件
    Windows 10 KMS 激活方法
    Sublime Text 3 如何修改默认快捷键
    Grunt快速使用笔记
    CSS3字体发光效果
    CSS3使用盒模型实现三栏布局
    CSS3Transition添加多个过渡效果
    Javascript 判断网页横竖屏
    【iOS知识汇】OC点语法的坑
  • 原文地址:https://www.cnblogs.com/pyhan/p/12290632.html
Copyright © 2020-2023  润新知