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__# 实例对应的类(仅新式类中)

python之类的更多相关文章

  1. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  2. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  3. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  4. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  5. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  6. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

  7. Python编码记录

    字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...

  8. Apache执行Python脚本

    由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...

  9. python开发编译器

    引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...

  10. 关于解决python线上问题的几种有效技术

    工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...

随机推荐

  1. jQuery数字滚动(模拟网站人气、访问量递增)原创

    插件描述:实现数字上下滚动,模拟网站人气.访问量递增的动画效果,兼容性如下: 使用方法 $(el).runNum(val,params);   参数详解 val:数值型(默认70225800): pa ...

  2. Java中的IO流总结

    Java中的IO流总结 1. 流的继承关系,以及字节流和字符流. 2. 节点流FileOutputStream和FileInputStream和处理流BufferedInputStream和Buffe ...

  3. [转] iOS9系统自带字体

    Family: Thonburi Font: Thonburi-Bold Font: Thonburi Font: Thonburi-Light 1 2 3 4 Family: Khmer Sanga ...

  4. C#使用Emit生成构造函数和属性

    假设我们需要一个名叫Kitty的类,其在Pets程序集下. 1 // specify a new assembly name 2 var assemblyName = new AssemblyName ...

  5. 【BZOJ3379】[Usaco2004 Open]Turning in Homework 交作业

    题解: 比较容易想到二分答案+时间逆流 这样就变成了经典的路灯问题 f[a][b][0/1] 其实可以不用二分答案 根据倒着考虑我们会发现一定是先走旁边的再走中间的 计算到当前点+下课时间所需的最小时 ...

  6. Tychonov Theorem

    (Remark: The proof presented in this post is a reorganization and interpretation of that given by Ja ...

  7. 用ArcMap打开MXD文件报One or more layers failed to draw错误!

    错误信息: One or more layers failed to draw: FDO error: 0General function failure [PW_X]参数不足,期待是 1. 原因: ...

  8. Python_shutil模块

    import shutil 高级的文件,文件夹,压缩包的处理模块,也主要用于文件的拷贝 shutil.copyfileobj(fsrc,fdst[,length]): 将文件的内容拷贝到另一个文件(可 ...

  9. 谁说java里面有返回值的方法必须要有返回值,不然会报错????

    慢慢的总是发现以前的学得时候有些老师讲的不对的地方! 所以还是尽量别把一些东西说的那么绝对,不然总是很容易误导别人,特别是一些你自己根本就没有试过的东西,然后又斩钉截铁的告诉别人,这样不行,肯定不行什 ...

  10. 转载:搭建完整的arm-linux-gcc等交叉编译环境(感谢CSDN博主的分享)

    安装环境 Linux版本:Ubuntu 12.04    内核版本:Linux 3.5.0   交叉编译器版本:arm-linux-gcc-4.4.3 这个版本的交叉编译器 安装前的絮叨 首先简单介绍 ...