zoukankan      html  css  js  c++  java
  • day24 Pythonpython 面向对象设计 类

    将一些相同特征和动作的成为类,现有类才能创建对象,对象就是特征和动作的结合体

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

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

    类是用来描述 一类事物,类的对象指的是这一类书屋中的一个个个体,是事物就要有属性属性分为

    1:数据属性:就是变量

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

    注意:::类和对象均用来访问自己的属性

    class Chinese:
        '这是一个中国人'
        dang='共青团'
        def sui_di_tu_tan():
            print('正在吐')
    #调用这个函数一定要加参数,只不过还没定义参数的意义 def cha_dui(self): print('插到了前面') #数据属性 print(Chinese.dang) #函数属性 Chinese.sui_di_tu_tan() print(dir(Chinese)) #查看类的属性字典 print('=========================================') print(Chinese.__dict__) print('=============================================') print(Chinese.__dict__['dang']) print('=========================================') print(Chinese.cha_dui(1)) print('==============================') Chinese.__dict__['sui_di_tu_tan']() Chinese.__dict__['cha_dui']("you") 结果: 共青团 正在吐 ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'cha_dui', 'dang', 'sui_di_tu_tan'] ========================================= {'__module__': '__main__', '__doc__': '这是一个中国人', 'dang': '共青团', 'sui_di_tu_tan': <function Chinese.sui_di_tu_tan at 0x7f7d87a91158>, 'cha_dui': <function Chinese.cha_dui at 0x7f7d87a911e0>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>} ============================================= 共青团 ========================================= 插到了前面 None ============================== 正在吐 插到了前面

    对象由类实例化而来,类实例化的结果称为一个实例或者称为一个对象

    class Chinese:
        '这是一个中国人'
        dang='共青团'
        def sui_di_tu_tan():
            print('正在吐')
        def cha_dui(self):
            print('%s插到了前面' %self.名字)
        #初始化:__init__定制对象的属性,__init__会自动return所以要是自己加上return回报错
        def __init__(self,name,age,gender):
            print('初始化开始')
            print('-------------')
            print(self)#========>p1
            print('-------------')
            self.名字=name #p1.名字=name
            self.年龄=age #p1.年龄=age
            self.性别=gender #p1.性别=gender
            print('初始化结束')
            #class自动帮你return了
        def eat_foot(self,food):
            print('%s is eating %s' % (self.名字,food))
    #实例化会出发__init__函数运行
    p1 = Chinese('charon',12,'F')
    print(p1.__dict__)
    print(p1.名字)
    #p1产生的字典由__init__产生,p1调用dang在__init__作用域没找到,就去外一层Chinese作用域找dang
    print(p1.dang)
    #print(Chinese.__dict__)
    Chinese.sui_di_tu_tan()
    Chinese.cha_dui(p1)
    #p1.sui_di_tu_tan()
    p1.cha_dui()
    #与self内春地址相同
    print(p1)
    p1.eat_foot('shit')
    print('=========================================')
    p2 = Chinese('pluto',100,'F')
    p2.eat_foot('apple')
    
    
    
    结果:
    China
    Japan
    {'name': 'charon'}
    Japan
    eventment
    eventment
    {'__module__': '__main__', 'country': 'Japan', '__init__': <function Chinese.__init__ at 0x7fc8ed2ff158>, 'paly_ball': <function Chinese.paly_ball at 0x7fc8ed2ff1e0>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None, 'dang': 'eventment'}
    ===================================================
    {'__module__': '__main__', 'country': 'Japan', '__init__': <function Chinese.__init__ at 0x7fc8ed2ff158>, 'paly_ball': <function Chinese.paly_ball at 0x7fc8ed2ff1e0>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}
    

     类的增删改查

    # -*- coding:utf8 -*-
    class Chinese:
        country = 'China'
        def __init__(self,name):
            self.name=name
        def paly_ball(self,ball):
            print('%s in playing %s' % (self.name,ball))
    #查看
    print(Chinese.country)
    #修改
    Chinese.country = 'Japan'
    print(Chinese.country)
    #用这个类生成一个实例
    p1 = Chinese('charon')
    print(p1.__dict__)
    print(p1.country)
    #增加
    Chinese.dang='eventment'
    print(Chinese.dang)
    print(p1.dang)
    #删除
    #del Chinese.dang
    print(Chinese.__dict__)
    print('===================================================')
    del Chinese.dang
    print(Chinese.__dict__)
    
    结果:
    China
    Japan
    {'name': 'charon'}
    Japan
    eventment
    eventment
    {'__module__': '__main__', 'country': 'Japan', '__init__': <function Chinese.__init__ at 0x7f29a1607158>, 'paly_ball': <function Chinese.paly_ball at 0x7f29a16071e0>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None, 'dang': 'eventment'}
    ===================================================
    {'__module__': '__main__', 'country': 'Japan', '__init__': <function Chinese.__init__ at 0x7f29a1607158>, 'paly_ball': <function Chinese.paly_ball at 0x7f29a16071e0>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}
    

    实例属性增删改查 

    class Chinese:
        country='China'
        def __init__(self,name):
            self.name=name
        def paly_ball(self,ball):
            print('%s 正在打 %s' % (self.name,ball))
    #生成一个实例
    p1 = Chinese('charon')
    #查看实例属性字典
    print(p1.__dict__)
    
    #查看实例属性
    print(p1.name)
    print(p1.paly_ball)
    p1.paly_ball('football')
    #增加实例属性
    p1.age = 18
    print(p1.__dict__)
    print(p1.age)
    #属性分为有函数属性跟数据属性
    #实例只有数据属性,他的函数属性是调类的
    #修改实例属性
    p1.age=200
    print(p1.__dict__)
    print(p1.age)
    #删除
    del p1.age
    print(p1.__dict__)
    
    结果:
    {'name': 'charon'}
    charon
    <bound method Chinese.paly_ball of <__main__.Chinese object at 0x7fafb2db8550>>
    charon 正在打 football
    {'name': 'charon', 'age': 18}
    18
    {'name': 'charon', 'age': 200}
    200
    {'name': 'charon'}

     对象和实例属性

    # class Chinese:
    #     country='China'
    #     def __init__(self,name):
    #         self.name=name
    #     def paly_ball(self,ball):
    #         print('%s 正在打 %s' % (self.name,ball))
    # p1=Chinese('charon')
    # print(p1.country)
    # p1.country='Japan'
    # #print(p1.__dict__)
    # #print(Chinese.__dict__)
    # print(p1.country)
    # print(Chinese.country)
    # print('类的--->',Chinese.country)
    # print('实例的--->',p1.country)
    
    
    # class Chinese:
    #     country = '中国'
    #     def __init__(self,name):
    #         self.name=name
    #
    #     def play_ball(self,ball):
    #         print('%s 正在打 %s' %(self.name,ball))
    # p1=Chinese('alex')
    # print(p1.country)
    
    country='中国-------------------'
    class Chinese:
        country='中国'
        def __init__(self,name):
            self.name=name
            #这个country是个变量,类是点加country
            print('--->',country)
    
        def play_ball(self,ball):
            print('%s 正在打 %s' %(self.name,ball))
    
    #print(Chinese.__dict__)
    #print(Chinese.country)
    p1=Chinese('alex')
    print(Chinese.country)
    print(Chinese.__dict__)
    
    
    结果:
    ---> 中国-------------------
    中国
    {'__module__': '__main__', 'country': '中国', '__init__': <function Chinese.__init__ at 0x7f298ab72158>, 'play_ball': <function Chinese.play_ball at 0x7f298ab721e0>, '__dict__': <attribute '__dict__' of 'Chinese' objects>, '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}
    

     换个姿势搞你,就不信你不爽

    class Chinese:
        country='China'
        l=['a','b']
        def __init__(self,name):
            self.name=name
            print(self.name)
    
        def play_ball(self,ball):
            print('%s 正在打 %s' %(self.name,ball))
    
    p1=Chinese('charon')
    # p1.l=['a','b','c']
    # print(p1.l)
    # print(Chinese.l)
    # print(Chinese.__dict__)
    print(p1.l)
    p1.l.append('c')
    print(p1.l)
    print(p1.__dict__)
    print(Chinese.l)
    
    结果:
    charon
    ['a', 'b']
    ['a', 'b', 'c']
    {'name': 'charon'}
    ['a', 'b', 'c']
  • 相关阅读:
    grails How to check if element in groovy array/hash/collection/list? Stack Overflow
    慧忠里自提点
    GroovyQ | 关注Groovy社区动态,分享Groovy开发经验。
    strupr strlwr
    Faqseafilevssvn seafile
    C++ STL下载和安装
    Emacs中学习gdb调试
    Readlineselect
    Diskfileio GongGeng
    Achieving Groovylike Fluency in Java with Google Collections | The Kaptain on ... stuff
  • 原文地址:https://www.cnblogs.com/charon2/p/10411409.html
Copyright © 2011-2022 走看看