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数据结构之二叉树的建立实例
Apr 29 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
Python中用Spark模块的使用教程
Apr 13 Python
python3.5绘制随机漫步图
Aug 27 Python
Python异常的检测和处理方法
Oct 26 Python
解决python xx.py文件点击完之后一闪而过的问题
Jun 24 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
Django CSRF认证的几种解决方案
Mar 03 Python
Python用5行代码实现批量抠图的示例代码
Apr 14 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
Python答题卡识别并给出分数的实现代码
Jun 22 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
让你的网站首页自动选择语言转跳
2006/12/06 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
php通过文件头判断格式的方法
2016/05/28 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
2017/11/06 Javascript
vue实现图片预览组件封装与使用
2019/07/13 Javascript
初步认识Python中的列表与位运算符
2015/10/12 Python
python reduce 函数使用详解
2017/12/05 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
python set集合使用方法解析
2019/11/05 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
C#面试题问题集
2016/04/02 面试题
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
结婚保证书范文
2014/04/29 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
高并发下Redis如何保持数据一致性(避免读后写)
2022/03/18 Redis
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记