44、class类:
一、类定义的一般形式:
1、简单的形式:实例化对象没有自己独有的数据属性。
>>> class fistclass():
... data1 = 'hello world' ### ==>这是类的数据属性或类成员属性。
... def printdata(self): ###==>这是类的方法,而且这里至少有一个参数self!!!
... print('nihao%s' %self.data1)
...
>>> class1 = fistclass() ##==>类实例化
>>> class1.
class1.__class__( class1.__format__( class1.__le__( class1.__reduce_ex__( class1.__weakref__
class1.__delattr__( class1.__ge__( class1.__lt__( class1.__repr__( class1.data1
class1.__dict__ class1.__getattribute__( class1.__module__ class1.__setattr__( class1.printdata(
class1.__dir__( class1.__gt__( class1.__ne__( class1.__sizeof__(
class1.__doc__ class1.__hash__( class1.__new__( class1.__str__(
class1.__eq__( class1.__init__( class1.__reduce__( class1.__subclasshook__(
>>> class1.data1 ##类数据属性调用
'hello world'
>>> class1.printdata() ##类的方法的调用
nihaohello world
2、定义对象独有的数据属性:
>>> class seclass():
... data1 = 'hello seclass'
... def setdata(self,x):
... self.str1 = x
... def printdata(self):
... print(self.str1)
...
>>> ins1 = seclass()
>>> ins1.
ins1.__class__( ins1.__format__( ins1.__le__( ins1.__reduce_ex__( ins1.__weakref__
ins1.__delattr__( ins1.__ge__( ins1.__lt__( ins1.__repr__( ins1.data1
ins1.__dict__ ins1.__getattribute__( ins1.__module__ ins1.__setattr__( ins1.printdata(
ins1.__dir__( ins1.__gt__( ins1.__ne__( ins1.__sizeof__( ins1.setdata(
ins1.__doc__ ins1.__hash__( ins1.__new__( ins1.__str__(
ins1.__eq__( ins1.__init__( ins1.__reduce__( ins1.__subclasshook__(
>>> ins1.data1
'hello seclass'
>>> ins1.setdata('abc')
>>> ins1.printdata()
abc
>>> ins2 = seclass()
>>> ins2.data1
'hello seclass'
>>> ins2.setdata('xy')
>>> ins2.printdata()
xy
3、__init__()方法:
创建实例时,python会自动调用类中的__init__方法,以隐性的为实例提供属性。
__init__称之为构造器。
如果类中没有定义__init__方法,则实例之初仅仅是创建一个简单的名称空间。
>>> class thirdclass():
... data3 = 'hello thirdclass'
... def __init__(self,who):
... self.name = who
...
>>> ins3 = thirdclass('lucy')
>>> ins3.
ins3.__class__( ins3.__format__( ins3.__le__( ins3.__reduce_ex__( ins3.__weakref__
ins3.__delattr__( ins3.__ge__( ins3.__lt__( ins3.__repr__( ins3.data3
ins3.__dict__ ins3.__getattribute__( ins3.__module__ ins3.__setattr__( ins3.name
ins3.__dir__( ins3.__gt__( ins3.__ne__( ins3.__sizeof__(
ins3.__doc__ ins3.__hash__( ins3.__new__( ins3.__str__(
ins3.__eq__( ins3.__init__( ins3.__reduce__( ins3.__subclasshook__(
>>> ins3.data3
'hello thirdclass'
>>> ins3.name
'lucy'
4、__dict__:
>>> ins3.__dict__ 实例的属性
{'name': 'lucy'}
>>> thirdclass.__dict__ 类的属性。
mappingproxy({'data3': 'hello thirdclass', '__init__': <function thirdclass.__init__ at 0x7f8e0a440ea0>, '__dict__': <attribute '__dict__' of 'thirdclass' objects>, '__module__': '__main__', '__doc__': None, '__weakref__': <attribute '__weakref__' of 'thirdclass' objects>})
5、类中的可用变量:
>>> class c1():
... var1 = 'hello c1' ###==>类的静态变量!!!!
... def __init__(self,who):
... self.insdata = who ###==>实例变量。
... self.name = '123' ###==>局部变量:只属于这个方法。
...
>>> ins1 = c1(12)
>>> ins1.
ins1.__class__( ins1.__format__( ins1.__le__( ins1.__reduce_ex__( ins1.__weakref__
ins1.__delattr__( ins1.__ge__( ins1.__lt__( ins1.__repr__( ins1.insdata
ins1.__dict__ ins1.__getattribute__( ins1.__module__ ins1.__setattr__( ins1.name
ins1.__dir__( ins1.__gt__( ins1.__ne__( ins1.__sizeof__( ins1.var1
ins1.__doc__ ins1.__hash__( ins1.__new__( ins1.__str__(
ins1.__eq__( ins1.__init__( ins1.__reduce__( ins1.__subclasshook__(
>>> ins1.name
'123'
>>> ins1.var1
'hello c1'
>>> ins1.insdata
12
6、类的继承:python允许多重继承,属性搜索方法:从左往右,从下往上。
>>> class PClass(object):
... gender = 'male'
... def __init__(self,who):
... self.name = who
...
>>> class CClass(PClass):
... def displayinfo(self):
... print(self.gender,self.name)
...
>>> ins1 = CClass('lucy')
>>> ins1.
ins1.__class__( ins1.__format__( ins1.__le__( ins1.__reduce_ex__( ins1.__weakref__
ins1.__delattr__( ins1.__ge__( ins1.__lt__( ins1.__repr__( ins1.displayinfo(
ins1.__dict__ ins1.__getattribute__( ins1.__module__ ins1.__setattr__( ins1.gender
ins1.__dir__( ins1.__gt__( ins1.__ne__( ins1.__sizeof__( ins1.name
ins1.__doc__ ins1.__hash__( ins1.__new__( ins1.__str__(
ins1.__eq__( ins1.__init__( ins1.__reduce__( ins1.__subclasshook__(
>>> ins1.gender
'male'
>>> ins1.name
'lucy'
>>> ins1.displayinfo()
male lucy
- Python类的基础入门知识
http://www.codesky.net/article/201003/122860.html首先第一点,你会发现Python Class的定义中有一个括号,这是体现继承的地方. Java用ext ...
- Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量
Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量 一丶线程的理论知识 什么是线程: 1.线程是一堆指令,是操作系统调度 ...
- 图解Python 【第五篇】:面向对象-类-初级基础篇
由于类的内容比较多,分为类-初级基础篇和类-进阶篇 类的内容总览图: 本节主要讲基础和面向对象的特性 本节内容一览图: 前言总结介绍: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 ...
- Python类中super()和__init__()的关系
Python类中super()和__init__()的关系 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(sel ...
- LightMysql:为方便操作MySQL而封装的Python类
原文链接:http://www.danfengcao.info/python/2015/12/26/lightweight-python-mysql-class.html mysqldb是Python ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- 再学python类(终结篇)
续写 初学python类,这几天吃坏东西了,拖着虚弱的身躯写的.有些乱请各位看官海涵. 声明:本人编程新手,还在学习中.所表述的东西都是基础语法之类的,分享我的学习笔记.还望多多指点,我一定虚心接受. ...
- 【Python&数据结构】 抽象数据类型 Python类机制和异常
这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Pyt ...
- 《Python从入门基础到实践》
<Python学习——从入门到实践> 第1章 Python语言概述 1.1 从计算机到编程 1.1.1 程序语言的演变:机器语言,汇编语言,高级语言 1.1.1.1 演变原因 1.1.1. ...
随机推荐
- z
360导航_新一代安全上网导航 http://www.codeproject.com/Articles/636730/Distributed-caching-using-Redis-server-wi ...
- 通过例子学python(2.1)
第二章 列表和元组 2.1 序列概览 #第2章 列表和元组 #2.1 序列概览 #序列sequence , 序列中每一个元素被分配一个序号,即元素的位置,也称为索引. #从前往后,0,1,2,3,:从 ...
- (组合数学3.1.1.1)POJ 1146 ID Codes(字典序法)
/* * POJ_1146.cpp * * Created on: 2013年10月8日 * Author: Administrator */ #include <iostream> #i ...
- selenium.common.exceptions.TimeoutException: Message: Screenshot: available via screen
在使用selenium+phantomjs的时候在Windows平台下能够正常工作,在Linux下却不能,并得到错误信息: selenium.common.exceptions.TimeoutExce ...
- java传递json数据到前台jsp
在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键.例如: JSON字符串: var str1 = '{ &q ...
- uva1393 Highways
留坑(p.339) 已填(膜汪) 每条直线至少经过两个点,我们不妨在经过的所有点中的第二个点统计它 设f[i][j]表示i * j的答案,那么显然可以用f[i][j] = f[i - 1][j] + ...
- 快速设计一个简单的WPF串口上位机
最近一直在学习UWP,其中有的技术参考了WPF,所以又回头再来学习WPF,感觉学的东西很杂,必须记录一下,不然时间长了还得忘掉,于是申请开始写博客,将学习的心得记录一下,以备后用.这次是因为公司内训, ...
- 基于Tomcat7、Java、WebSocket的服务器推送聊天室
http://blog.csdn.net/leecho571/article/details/9707497 http://blog.fens.me/java-websocket-intro/ jav ...
- Configuring Robolectric
There are numerous ways to customize how Robolectric behaves at runtime. Config Annotation The prima ...
- Java多线程——其他工具类CyclicBarrier、CountDownLatch和Exchange
CyclicBarrier 适用于:创建一组任务,它们并行地执行任务,然后在进行下一个步骤之前等待,直至所有任务完成.它使得所有的并行任务都将在栅栏处列队,因此可以一致地向前移动. 表示大家彼此等待, ...