python类定义的讲解


Posted in Python onNovember 01, 2013

一、类定义:

class <类名>:
 <语句>

类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。如果直接使用类名修改其属性,那么将直接影响到已经实例化的对象

类的私有属性:

__private_attrs  两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs
类的方法

在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数
私有的类方法

__private_method 两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用slef.__private_methods

类的专有方法:
__init__  构造函数,在生成对象时调用
__del__   析构函数,释放对象时使用
__repr__ 打印,转换
__setitem__按照索引赋值
__getitem__按照索引获取值
__len__获得长度
__cmp__比较运算
__call__函数调用

__add__加运算
__sub__减运算
__mul__乘运算
__div__除运算
__mod__求余运算
__pow__称方

#类定义  
    class people:  
        #定义基本属性  
        name = ''  
        age = 0  
        #定义私有属性,私有属性在类外部无法直接进行访问  
        __weight = 0  
        #定义构造方法  
        def __init__(self,n,a,w):  
            self.name = n  
            self.age = a  
            self.__weight = w  
        def speak(self):  
            print("%s is speaking: I am %d years old" %(self.name,self.age))        
    p = people('tom',10,30)  
    p.speak()

二、继承类定义:
1.单继承
class <类名>(父类名)
   <语句>

class childbook(book)
    age = 10

#单继承示例  
    class student(people):  
        grade = ''  
        def __init__(self,n,a,w,g):  
            #调用父类的构函  
            people.__init__(self,n,a,w)  
            self.grade = g  
        #覆写父类的方法  
        def speak(self):  
            print("%s is speaking: I am %d years old,and I am in grade %d"%(self.name,self.age,self.grade))           s = student('ken',20,60,3)  
    s.speak()

2.类的多重继承
class 类名(父类1,父类2,....,父类n)
     <语句1>

需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索,即方法在子类中未找到时,从左到右查找父类中是否包含方法
#另一个类,多重继承之前的准备  
class speaker():  
    topic = ''  
    name = ''  
    def __init__(self,n,t):  
        self.name = n  
        self.topic = t  
    def speak(self):  
        print("I am %s,I am a speaker!My topic is %s"%(self.name,self.topic))  #多重继承  
class sample(speaker,student):  
    a =''  
    def __init__(self,n,a,w,g,t):  
        student.__init__(self,n,a,w,g)  
        speaker.__init__(self,n,t)  
test = sample("Tim",25,80,4,"Python")  
test.speak()#方法名同,默认调用的是在括号中排前地父类的方法
Python 相关文章推荐
Python中对象迭代与反迭代的技巧总结
Sep 17 Python
浅谈python中的实例方法、类方法和静态方法
Feb 17 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
获取python文件扩展名和文件名方法
Feb 02 Python
解决pandas read_csv 读取中文列标题文件报错的问题
Jun 15 Python
Python高斯消除矩阵
Jan 02 Python
利用Python校准本地时间的方法教程
Oct 31 Python
python标识符命名规范原理解析
Jan 10 Python
python3操作注册表的方法(Url protocol)
Feb 05 Python
基于opencv实现简单画板功能
Aug 02 Python
python 中 .py文件 转 .pyd文件的操作
Mar 04 Python
Python源码解析之List
May 21 Python
用实例说明python的*args和**kwargs用法
Nov 01 #Python
python操作MongoDB基础知识
Nov 01 #Python
python操作MySQL数据库具体方法
Oct 28 #Python
Python sys.path详细介绍
Oct 17 #Python
python开发的小球完全弹性碰撞游戏代码
Oct 15 #Python
python中 ? : 三元表达式的使用介绍
Oct 09 #Python
Python 文件和输入输出小结
Oct 09 #Python
You might like
PHP4在Windows2000下的安装
2006/10/09 PHP
php cache类代码(php数据缓存类)
2010/04/15 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
图像替换新技术 状态域方法
2010/01/28 Javascript
锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)
2010/03/23 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
Function.prototype.bind用法示例
2013/09/16 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
提升python处理速度原理及方法实例
2019/12/25 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
C#和SQL Server的面试题
2016/08/12 面试题
什么时候需要进行强制类型转换
2016/09/03 面试题
旅游个人求职信范文
2014/01/30 职场文书
销售口号大全
2014/06/11 职场文书
北京英文导游词
2015/02/12 职场文书
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js