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中文编码那些事
Jun 25 Python
Python算法之栈(stack)的实现
Aug 18 Python
Python常用模块用法分析
Sep 08 Python
Python 错误和异常代码详解
Jan 29 Python
Python 解决中文写入Excel时抛异常的问题
May 03 Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 Python
Python基础之文件读取的讲解
Feb 16 Python
Python Pandas 获取列匹配特定值的行的索引问题
Jul 01 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
django日志默认打印request请求信息的方法示例
May 17 Python
Django+Uwsgi+Nginx如何实现生产环境部署
Jul 31 Python
使用gunicorn部署django项目的问题
Dec 30 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
PHP写MySQL数据 实现代码
2009/06/15 PHP
PHP中文分词的简单实现代码分享
2011/07/17 PHP
php常用ODBC函数集(详细)
2013/06/24 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
js 用CreateElement动态创建标签示例
2013/11/20 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
微信小程序 toast 详解及实例代码
2016/11/09 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
Python中的ctime()方法使用教程
2015/05/22 Python
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
深入解答关于Python的11道基本面试题
2017/04/01 Python
Python 通过URL打开图片实例详解
2017/06/01 Python
pyhton列表转换为数组的实例
2018/04/04 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
Python作用域与名字空间原理详解
2020/03/21 Python
介绍一下linux的文件系统
2015/10/06 面试题
乡镇网格化管理实施方案
2014/03/23 职场文书
合伙经营协议书范本
2014/09/13 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python