zoukankan      html  css  js  c++  java
  • python之类

    1 初始类

    1 声明类 (和声明函数很相似)

    类的定义格式

    class 类名:

        '类的文档字符串'

        类体

    2 创建一个类:

    class Data:

        pass

    Python编程中习惯类名使用单数单词并且首字母大写

    类是数据与函数的结合,二者称为类的属性

    class Garen:        #定义英雄盖伦的类,不同的玩家可以用它实例出自己英雄;

        camp='Demacia'  #所有玩家的英雄(盖伦)的阵营都是Demacia;

        def attack(self,enemy):   #普通攻击技能,enemy是敌人;

            enemy.life_value-=self.aggressivity #根据自己的攻击力,攻击敌人就减掉敌人的生命值。

    2 类的作用1:属性引用

    属性引用(类名.属性)

    (1)引用类的数据属性(类名.变量名)

    print(Garen.camp)   # 引用类的数据属性,该属性与所有对象/实例共享

    输出结果为:

    Demacia

    (2)引用类的函数属性(类名.函数名)

    print(Garen.attack)   #引用类的函数属性,该属性也共享

    输出结果为:

    <function Garen.attack at 0x00000059CE8FAF28>

    (3)类的属性操作

    Garen.name='Garen1'    #增加属性

    print(Garen.name)       #查询属性

    输出结果为:

    Garen1

    del Garen.name         #删除属性

    print(Garen.name)

    输出结果为:

    AttributeError: type object 'Garen' has no attribute 'name' #报错

    Garen.camp="aaaa"      #修改属性

    print(Garen.camp)

    输出结果为:

    aaaa

    3 类的作用2:实例化

    (1)__init__实例化

    类名加括号就是实例化,会自动触发__init__函数的运行,可以用他来为每个实例定制自己的特性

    class Garen:

        camp='Demacia'

        def __init__(self,nickname,aggressivity=58,life_value=455):

            self.nickname=nickname  #为自己的盖伦起个别名;

            self.aggressivity=aggressivity #英雄都有自己的攻击力;

            self.life_value=life_value #英雄都有自己的生命值;

        def attack(self,enemy):

            print("attack %s" % enemy)

    实例化:类名+括号

    g1=Garen('草丛伦')

    #就是在执行Garen.__int__(g1,’草丛伦’),然后执行__init__内的代码g1.nickname=’草丛伦’等

    (2)self作用

    self的作用是在实例化时自动将对象/实例本身传给__init__的第一个参数,self可以是任意名字,但是self是大家公认的。

    这种自动传递的机制还体现在g1.attack的调用上,后续会介绍

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

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

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

    二:特殊的类属性

    类名.__name__# 类的名字(字符串)

    类名.__doc__# 类的文档字符串

    类名.__base__# 类的第一个父类(在讲继承时会讲)

    类名.__bases__# 类所有父类构成的元组(在讲继承时会讲)

    类名.__dict__# 类的字典属性

    类名.__module__# 类定义所在的模块

    类名.__class__# 实例对应的类(仅新式类中)

  • 相关阅读:
    vue-router基础使用
    Vue插槽
    Vue组件通信
    小程序自定义头部导航栏
    css日常积累
    移动端的无缝轮播图片
    vue的h5开发中,将页面保存为图片
    vue-webpack打包问题
    洛谷P1341 最受欢迎的奶牛
    Tarjan 算法详解
  • 原文地址:https://www.cnblogs.com/asaka/p/6758359.html
Copyright © 2011-2022 走看看