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类class基础的更多相关文章

  1. Python类的基础入门知识

    http://www.codesky.net/article/201003/122860.html首先第一点,你会发现Python Class的定义中有一个括号,这是体现继承的地方. Java用ext ...

  2. Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量

    Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量 一丶线程的理论知识 什么是线程:    1.线程是一堆指令,是操作系统调度 ...

  3. 图解Python 【第五篇】:面向对象-类-初级基础篇

    由于类的内容比较多,分为类-初级基础篇和类-进阶篇 类的内容总览图: 本节主要讲基础和面向对象的特性 本节内容一览图: 前言总结介绍: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 ...

  4. Python类中super()和__init__()的关系

    Python类中super()和__init__()的关系 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(sel ...

  5. LightMysql:为方便操作MySQL而封装的Python类

    原文链接:http://www.danfengcao.info/python/2015/12/26/lightweight-python-mysql-class.html mysqldb是Python ...

  6. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  7. 再学python类(终结篇)

    续写 初学python类,这几天吃坏东西了,拖着虚弱的身躯写的.有些乱请各位看官海涵. 声明:本人编程新手,还在学习中.所表述的东西都是基础语法之类的,分享我的学习笔记.还望多多指点,我一定虚心接受. ...

  8. 【Python&数据结构】 抽象数据类型 Python类机制和异常

    这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Pyt ...

  9. 《Python从入门基础到实践》

    <Python学习——从入门到实践> 第1章 Python语言概述 1.1 从计算机到编程 1.1.1 程序语言的演变:机器语言,汇编语言,高级语言 1.1.1.1 演变原因 1.1.1. ...

随机推荐

  1. Navicat for MySQL之MySQL客户端的下载、安装和使用

    前期工作 若需使用Navicat for MySQL,则需要先安装MySQL,在此就不叙述了.具体可见我的博客: mysql-5.7.11-winx64.zip 的下载.安装.配置和使用(window ...

  2. ORA-01858: a non-numeric character was found where a numeric was expected

    [ERROR] [2017-01-05 13:18:52,617] [org.hibernate.engine.jdbc.spi.SqlExceptionHelper.http-bio-8080-ex ...

  3. springmvc报错 org.springframework.web.servlet.DispatcherServlet

    在写springMVC时,导入所有需要的包后,运行程序,控制台报以下错误: 严重: Servlet [springDispatcherServlet] in web application [/Spr ...

  4. Struts2配置文件讲解

    解决在断网环境下,配置文件无提示的问题我们可以看到Struts.xml在断网的情况下,前面有一个叹号,这时,我们按alt+/ 没有提示,这是因为” http://struts.apache.org/d ...

  5. Scrapy运行报错解决方案

    最近在学习Scrapy框架,用博客记录一下遇到的错误的解决方案 时间: 2016-9-20 错误:ImportError: No module named items 原因:spiders下的.py文 ...

  6. 如何在word2007中并排查看对比显示两个文档

    使用word编辑或修改文件时,有时会需要对两个文档进行对比,此时就应该使用并排查看功能. 点击“视图”菜单中的“并排查看” 所打开的两个文档就会同时打开,并排显示 可点击“同步滚动”设置或取消同步滚动

  7. 使用SqlAlchemy时如何方便的取得dict数据、dumps成Json

    使用Sqlalchemy可以方便的从数据库读取出python对象形式的数据(吐槽:说实话对象形式也没多方便,还不如我之前从关系型数据库直接读取出dict形式的数据用起来方便,具体参见我以前的文章htt ...

  8. NUll在oracle与sqlserver中使用相同与区别

    最近在使用Oracle进行开发,遇到很多与以前使用sqlserver的不同语法.今天遇到null在两种数据库上面操作上的差别,在此记录两种数据库上的差异. null 与字符串相加 1.在oracle中 ...

  9. 事件触发函数中的this,target,currentTarget,srcElement

    要解释其中的区别,首先要理解浏览器的事件机制, 现在主流的浏览器事件基本是先捕获再冒泡,IE浏览器只有冒泡阶段 事件是在冒泡阶段触发的 看看这个HTML 当我点击"我是父节点的时候" ...

  10. poj 3463 Sightseeing(次短路+条数统计)

    /* 对dij的再一次理解 每个点依旧永久标记 只不过这里多搞一维 0 1 表示最短路还是次短路 然后更新次数相当于原来的两倍 更新的时候搞一下就好了 */ #include<iostream& ...