`
saber7
  • 浏览: 10171 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于python中类的小总结1

阅读更多

关于类的小总结:

一、什么是类?

class 名称(父类名字,没有父类就写object):
	pass

二、什么是方法?
类里面定义的函数就是方法,如:

class 名称(父类名字,没有父类就写object):
	def sayHello(self): # 这个类里面的函数,就是方法。
		print 'hello!'

三、什么是类实例?
如以下一个类:

class Goodmorning(object):
	pass

创建一个类实例很简单,gm = Goodmorning()

四、什么是子类?
简单的说就是定义个类,括号里写上父类的名字,就是子类,子类继承父类的方法。如

class Good(Goodmorning):
	pass

五、如何调用实例方法?
如下面一个类:

class Sh(object):
	def sayHello(self): 
		print 'hello!'

首先实例化这个类,
sh = Sh()
然后用句点调用方法,
sh.sayHello()

六、继承及覆盖父类的方法
首先创建一个父类A:
>>> class A(object):
    def sayhello(self):
        print 'hello!'
实例化这个父类:
>>> a = A()
调用方法:
>>> a.sayhello()
hello!
创建一个子类B看继承父类方法:
>>> class B(A):
    def s(self):
        pass
实例化这个子类:
>>> b = B()
调用方法:(继承了父类的方法)
>>> b.sayhello()
hello!
再创建一个子类C看覆盖父类方法:
class C(A):
    def sayhello(self):
        print 'CCCCCCsay hello!'
实例化这个子类:
>>> c = C()
调用方法:(覆盖了父类的方法)
>>> c.sayhello()
CCCCCCsay hello!
虽然子类C继承了父类A的方法sayhello(),但是子类C定义了自己的方法sayhello(),因此覆盖了父类的方法。当然,如果我们需要用到父类的sayhello()方法时,可以用父类的实例来调用,如:
>>> a.sayhello()
hello!


七、关于__init__()方法
__init__()方法是在类被实例化时首先被自动调用的方法,如
>>> class SA(object):
    def __init__(self):
        print 'first!!'

       
>>> sa =SA()
first!!
__init__()方法的覆盖,如:
>>> class P(object):
    def __init__(self):
        print "calling P's constructor"

       
>>> class C(P):
    def __init__(self):
        print "calling C's constructor"

       
>>> c = C()
calling C's constructor
如想同时获得子类C和父类P的__init__方法:
>>> class C(P):
    def __init__(self):
        P.__init__(self)
        print "calling C's constructor"

       
>>> c = C()
calling P's constructor
calling C's constructor
或使用super()
>>> class C(P):
    def __init__(self):
        super(C, self).__init__()
        print "calling C's constructor"

       
>>> c = C()
calling P's constructor
calling C's constructor
可以考虑使用super(C, self).__init__()代替P.__init__(self),因为这样可以不必写父类名字(P),这样的话当改变了继承关系的时候,不用到处去找哪个地方写了P.__init__(self)……当然,super()的主要用途就是查找父类属性。

八、当存在多个父类、子类、子孙类时,方法解释顺序
比如有两个父类P1、P2,两个子类C1、C2、一个子孙类F,当F的实例调用F中不存在的方法时,查找顺序为由下至上,由左至右的顺序,及F-->C1-->C2-->P1-->P2,若中间就找到,如C2查找到要调用的方法,即停止(这里说的是新式类。)

九、类、实例和其他对象的几个内建函数
0x01.issubclass(a, b)用来判断a是否是b的子类(或子孙类等),返回True或False,如:
>>> class P(object):
    pass

>>> class C(P):
    pass

>>> class D(C):
    pass

>>> issubclass(C, P)
True
>>> issubclass(D, P)
True
>>> issubclass(D, C)
True
如果a就是b的话,也会返回True:
>>> issubclass(P, P)
True

0x02.isinstance(a, b)用来判断a是否是b的实例,同样返回True或False,如
>>> class A(object):
    pass

>>> class B(object):
    pass

>>> a = A()
>>> b = B()
>>>
>>> isinstance(a, A)
True
>>> isinstance(b, A)
False
>>> isinstance(b, B)
True
可以想象,isinstance(a, b)同样可以判断一个对象a是否是b类型,如:
>>> isinstance(7, int)
True

0x03.hasattr(), getattr(),setattr(), delattr()
(1)hasattr()用来判断某类中是否有某个属性
(2)getattr()用来获取某类中的某个属性
(3)setattr()用来向某个类中添加一个属性或覆盖某个属性
(4)delattr()用来从某个类中删除一个属性
>>> class sayH(object):
    def __init__(self):
        self.say = 'hello!'

       
>>> sh = sayH()
>>> hasattr(sh, 'say')
True
>>> getattr(sh, 'say')
'hello!'
>>> setattr(sh, 'bye', 'byebye!')
>>> getattr(sh, 'bye')
'byebye!'
>>> delattr(sh, 'say')
>>> getattr(sh, 'say')

Traceback (most recent call last):
  File "<pyshell#371>", line 1, in <module>
    getattr(sh, 'say')
AttributeError: 'sayH' object has no attribute 'say'

0x04.dir(a)返回a的属性的列表

0x05.vars(a)返回a的属性及值的字典

 

 

============================

 

未完……

 

关于python中类的小总结1

关于python中类的小总结2

分享到:
评论

相关推荐

    Python学习心得&总结.doc

    Python学习心得&总结.doc

    selenium python API分类总结

    selenium python API分类总结.pdf

    python总结

    python总结。

    python类与对象小结

    我初步总结一下关于python类和对象常用的它们的一些语法。

    15天精通Python-Python总结-Python基础-pyhthon小代码.docx

    15天精通Python-Python总结-Python基础-pyhthon小代码 Python总结 引言 语言分类 机器语言—汇编语言—高级语言(C语言—java/python)--php/perl/ruby C语言—面向过程 Java/python—面向对象 Python 是面向过程、...

    python的re模块总结.docx

    python的re模块总结全文共4页,当前为第1页。python的re模块总结全文共4页,当前为第1页。Python之re模块 python的re模块总结全文共4页,当前为第1页。 python的re模块总结全文共4页,当前为第1页。 Python用" \\\\...

    小甲鱼Python课后习题

    ·语句和语法——在python中输入代码来建立并处理对象,以及python一般的语法模型。 ·函数——python基本的面向过程工具,用于组织代码和重用。.. ·模块——封装语句、函数以及其他工具,从而可以组织成较大的组件...

    人工智能-项目实践-鸢尾花分类-Python 基于BP神经网络实现鸢尾花的分类

    人工智能-项目实践-鸢尾花分类-Python 基于BP神经网络实现鸢尾花的分类 本文用Python实现了BP神经网络分类算法,根据鸢尾花的4个特征,实现3种鸢尾花的分类。 算法参考文章:纯Python实现鸢尾属植物数据集神经网络...

    python中类变量与成员变量的使用注意点总结

    python 的类中主要会使用的两种变量:类变量与成员变量。类变量是类所有实例化对象共有的,而成员变量是每个实例化对象自身特有的。下面这篇文章主要给大家介绍了在python中类变量与成员变量的一些使用注意点,需要的...

    Python语法总结

    Python语法总结,语法学习讲义和笔记。 部分目录: 1. Python 3 1.1. 数据类型: 3 1.1.1. 整数,浮点数,字符串,布尔值(True、False),空值(None) 3 1.1.2. 数据类型list——数组: 3 1.1.3. tuple——常值...

    浅谈PyQt5中异步刷新UI和Python多线程总结

    PyQt是Qt的python接口,PyQt的文档较少,但接口和函数可以完全参照Qt,继承了Qt中大量的控件以及信号机制,十分方便。以下简介一个基本的PyQt程序。 – 需要导入的类主要来自三个包 – from PyQt5.QtWidgets import...

    Python知识点总结.doc

    python相关知识点,包括数据类型,语法,常用函数,类等,都是基础知识,学习过程积累的,也包括网上收集的。

    智能问答系统python实现

    基于知识图谱的智能问答系统python实现(复旦大学论文基于qa语料和知识库的问答系统)_python 智能问答,python 智能问答系统-机器学习代码类资源本代码实现是基于python实现的基于复旦大学崔万云博士的learing ...

    python类装饰器装饰方法通用编码模型分析.pdf

    python装饰器是一个用于封装函数、...本文首先探讨了实现装饰方法的类装饰器应具有的基本结构,接着对通用的两种编码模型进行了语法和流程的深入分析,并总结了各自的特点,为编写类装饰器装饰方法提供扎实的理论基础。

    Python 中的 Socket 编程

    Python 中的 Socket 编程 说明 译者注 授权 开始 Socket API 概览 TCP Sockets 客户端 / 服务器echo 程序 echo 程序的服务端 echo 程序的客户端 运行echo 程序的客户端和服务端 查看 socket 状态 通信流程的分解 ...

    清华大学精品Python学习PPT课件-第12章 Python项目实战:数据可视化.pptx

    清华大学精品Python学习PPT课件-第8章 Python类和对象.pptx 清华大学精品Python学习PPT课件-第9章 Python异常.pptx 清华大学精品Python学习PPT课件-第10章 Python文件操作.pptx 清华大学精品Python学习PPT课件-第11...

    老男孩第三期Python全栈开发视频教程 零基础系统学习Python开发视频+资料

    ├─(1) 01 python s3 day41 JS的历史以及引入方式.avi ├─(2) 02 python s3 day41 JS的基础规范.avi ├─(3) 03 python s3 day41 JS的基本数据类型.avi ├─(4) 04 python s3 day41 JS的运算符.avi ├─(5) 05 ...

    python知识点总结

    1. 语法基础:Python 的基本语法、变量、数据类型、运算符和控制流等基础知识。 2. 数据结构:Python 中的列表、元组、字典、集合等数据结构的使用和操作。 3. 函数和模块:定义和调用函数,创建和使用模块,以及...

    自己对python类package几种安装方法总结:手动、自动、在线、离线方式

    自己对python类package几种安装方法总结:手动、自动、在线、离线方式。并配有比较详细直观的实例操作步骤说明。

Global site tag (gtag.js) - Google Analytics