zoukankan      html  css  js  c++  java
  • py 5.24

    #面向对象
    #类:模子。Person,不具体。
    #实例/对象:依托于类产生的具体的带有属性的。alex
    #实例化:产生对象的过程。 alex = Person()
    #类:
    #分为静态属性(一般的变量)。动态属性(函数)
    # 查看类中的静态属性:类.变量名
    #查看类中的动态属性:类.函数名(或方法名)--->得到的是函数的内存地址。
    #调用动态属性:类.函数名()
    #创建类:class 类名(第一个字母必须大写,后面没有括号):
    #创建对象:
    # alex = Person(参数):  #内存中开辟一个属于对象的内存空间
    # 同时类中会自动执行 def __init__(self):函数    --->外面的参数会通过这里传进来。
    #self也会指向刚才对象打开的内存空间,self与alex内存地址相同。
    #给__init__(self)传参并定义self的变量值,存在内存地址中,执行结束后将结果返回给对象alex。
    #这样对象就产生了,可以用对象查看其中的各种属性或者操作其它类中的方法。
    #人狗大战:
    # class Person:     #建立一个类
    #     def __init__(self,name,sex,hp,ad):  #初始化方法
    #         self.name = name
    #         self.sex = sex
    #         self.hp = hp
    #         self.ad = ad                    #执行结束将各个变量值传给对象。(因为在同一个内存地址)
    #     def attack(self,dog):              #类中的一个方法。可以用对象直接调用,必须用这个类实例化的对象来调用。
    #         print('%s攻击了%s'%(self.name,dog.name))
    #         print('%s掉了%s点血,还剩%s点血'%(dog.name,self.ad,dog.hp-self.ad))
    #
    # class Dog:
    #     def __init__(self, name, kind, hp, ad):
    #         self.name = name
    #         self.kind = kind
    #         self.hp = hp
    #         self.ad = ad
    #     def bite(self,person):
    #         print('%s咬了%s'%(self.name,person.name))
    #         if person.hp <= self.hp:
    #             person.hp = 0
    #             print('%s血量为0,game over'%person.name)
    #         else:
    #             print('%s掉了%s点血,还剩%s点血' % (person.name, person.ad, person.hp - self.ad))
    #
    # alex = Person('alex','男',50,2)
    # egon = Person('egon','女',60,5)
    # taibai = Dog('taibai','taidy',60,90)
    # # taibai.bite(egon)
    # alex.attack(taibai)            #用对象直接调用类中的方法,省掉再传对象参数给self的麻烦。
    #对象调用类中的属性:
    #类中的属性存在类开辟的内存空间中,其它各个对象会自动产生一个变量指针指向类的内存地址,调用的时候直接根据指针来查找即可。
    # class Test:
    #     country = 'china'
    #     lis = ['span']
    #
    # obj = Test()         #创建了一个不带参数的对象。
    # print(obj.country)   #此处便是对象通过指针在类中找到的属性。
    # obj.country = 'England' #表示在对象本身的内存空间中增加一个country属性,并不改变类中的属性。
    # print(obj.country)
    # obj.lis = ['Japan']
    # obj.lis[0] = 'England'   #改变属性时,对象会先在自己的内存空间找是否存在这个属性,如果有,则改变,如果没有则去类中找。
    # print(obj.lis)            #obj中刚刚创建了lis属性,所以改变的是自己。
    # obj.lis[0] = 'England'    #如果没有lis这个属性,此处改的便是类中的属性。
    # print(obj.lis)
    # print(Test.lis)
    #总结:静态属性是所有对象共享的,所以如果要修改静态属性,最好用类直接修改最准确
    #类名一般用来:查看或修改静态属性。
    #              实例化对象
    #对象名一般用来:查看或修改对象的属性
    #                调用方法
    View Code

    一、面向对象

  • 相关阅读:
    使用IDENTITY列属性和Sequence对象
    使用OFFSET-FETCH进行数据过滤
    SQL 插入语句汇总
    建立&修改视图
    Centos 7.x 搭建 Zabbix3.4
    RDS 导出Mysqlbinlog_二进制日志
    Yac
    云服务器漏洞更新
    Centos 内存释放
    Centos 安装 Htop
  • 原文地址:https://www.cnblogs.com/liujjpeipei/p/9083286.html
Copyright © 2011-2022 走看看