#encoding=utf-8

 # python高级编程

     # python面向对象
         # 创建类

 # 无意中把Visual Studio Code的窗口调小了,查了一下,可以使用Ctrl+=放大窗口,使用Ctrl+-缩小窗口

 class Person:                                   # 这里类的申明用class
     'The baseclass of Human'                    # 文档字符串,相当于类的描述
     ins_count=0                                 # 这里申明的是类变量,在所有实例化对象中是公用的,类似于我们所说的静态变量  

     def __init__(self,name,age,sex):            # 这里方法的申明用def,__init__()表示初始化构造函数,注意这里的init都是双下划线
         self.name=name                          # 类变量的申明,类似与我们的属性,只在当前的实例化对象中访问
         self.age=age
         self.sex=sex
         self.ins_count+=1

     def logInfo(self):                          # 方法的定义,这种定义使用类似于Person.logInfo()这种方式调用是错误的
         if(self.sex==1):                        # self代表类的实例,在定义类的方法时是必须的,但在调用时不必传入相应的参数
             print 'His name is',self.name,',age is',self.age
         else:
             print 'Her name is',self.name,',age is',self.age    # 通过符号“.”来实现对属性的访问
         print self.ins_count

     def logAge(self):                           # 普通方法
         print 'Age is',self.age

     @staticmethod
     def printClassName():                       # 静态方法 无法访问类和实例属性
         print 'Person'

     @classmethod
     def printAttr(cls):                         # 类方法 可以访问类属性 无法访问实例属性
         print cls.ins_count

     def __del__(self):
         print 'drop'

 p=Person('hanmeimei',13,0)                      # 使用Person()的形式来创建类的实例,不需要像其他面向对象语言那样使用new来实例化
 Person.printClassName()
 p.logInfo()

 print(getattr(p,'name'))

 'Python类的内置属性:__dict__,类的属性(包含一个字典由类的属性数据组成)'
 print Person.__dict__ # 输出类的数据属性
 print Person.__name__ # 输出类名
 print Person.__module__ # 输出类所在的模块
 print Person.__doc__ # 输出类的文档字符串
 print Person.__bases__ # 输出类的所有父级的组成元组

 #del p # 当对象被创建时,就创建了一个引用,当这个对象不需要时,解释器会在适当的时机将垃圾对象占用的内存空间回收,可以定义__del__函数在对象销毁时调用

 class Student(Person):                          # 左侧即是类的继承的写法,使用 class child(parent)
     __serialNo=10086                            # 申明私有变量,在外部不可访问
     def logAge(self):                           # 如果父类的方法不能满足需求时,可以在子类中重写父类的方法
         if(self.sex==1):
             print 'His age is',self.age
         else:
             print 'Her age is',self.age         

     def __addserialNo(self):                    # 定义私有方法,外部不能访问
         self.__serialNo+=1

 # 关于下划线的说明,像__foo()__这种头尾双下划线的表示特殊方法,一般表示系统定义的名字,如__init()__之类,_foo()单下划线开头这种则表示的是protected级别,__foo()双下划线开头表示private级别

 s=Student('lilei',15,1)
 s.logInfo()
 s.logAge()

 # 熟悉面向对象的同志们可能发现这里没有重载,作者表示是的,我就是没有,跟我的理念不相符,……

Python笔记(九)的更多相关文章

  1. python笔记九(迭代)

    一.迭代 通过for循环来遍历一个列表,我们称这种遍历的方式为迭代.只要是可迭代对象都可以进行迭代操作. 以下代码可以用来判断一个对象是否是可迭代的. 一类是集合数据类型,如list.tuple.di ...

  2. Python笔记(九)_切片、列表生成式

    切片 mylist[:3] 取前3位元素,0可省略不写 mylist[-4:] 取后4位元素,0可省略不写 mylist[2:4] 从第2个开始取,取到第4个,但第4个不取,取的元素值为4-2=2 m ...

  3. python3.4学习笔记(九) Python GUI桌面应用开发工具选择

    python3.4学习笔记(九) Python GUI桌面应用开发工具选择 Python GUI开发工具选择 - WEB开发者http://www.admin10000.com/document/96 ...

  4. s21day01 python笔记

    s21day01 python笔记 一.计算机基础 计算机的初步认识 用户:人 软件:QQ.浏览器等 解释器/编译器/虚拟机:java解释器.python解释器等 操作系统 硬件:CPU.内存.硬盘. ...

  5. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块)   一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...

  6. Python笔记之不可不练

    如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...

  7. boost.python笔记

    boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...

  8. 20.Python笔记之SqlAlchemy使用

    Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...

  9. Python笔记——类定义

    Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...

  10. 13.python笔记之pyyaml模块

    Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...

随机推荐

  1. 读书笔记「Python编程:从入门到实践」_8.函数

    8.1 定义函数 def greet_user(): # def 来告诉Python你要定义一个函数.这是函数定义 """Hello World""& ...

  2. (转)Redis研究(一)—简介

    http://blog.csdn.net/wtyvhreal/article/details/41855327 Redis是一个开源的高性能键值对数据库.它通过提供多种键值数据类型来适应不同场景下的存 ...

  3. AFNetworking源码解析-https证书相关

    本篇说说安全相关的AFSecurityPolicy模块,AFSecurityPolicy用于验证HTTPS请求的证书,先来看看HTTPS的原理和证书相关的几个问题. HTTPS HTTPS连接建立过程 ...

  4. Appium Desired Capabilities信息配置

    编写APPium脚本,必须要配置Desired Capabilities信息 Desired Capabilities 在启动 session 的时候是必须提供的. Desired Capabilit ...

  5. Coreldraw软件反盗版提示x8有优惠活动 cdr x8提示盗版怎么办?

    CorelDRAW X8装不上,我的悲伤有这么大,或者比这还大一点...♥♥♥如果你遇到这样的断了网,卸了装,装了卸,然后再安装的...╮(-_-)╭这样的保存和另存为都点不了,不敢关电脑的亦或是这样 ...

  6. Java通过接口实现匿名类的实例

    package com.chase.test; /** * 通过接口实现匿名类的实例 * * @author Chase * * @date 2013-10-18 下午04:28:17 * * @ve ...

  7. 实现Modbus ASCII多主站应用

    1.更新设计关于原来的协议栈在Modbus ASCII主站应用时所存在的局限性与Modbus RTU也是一样的,所以我们不分析它的不足,只讨论更新设计.我们将主站及其所访问的从站定义为通用的对象,而当 ...

  8. 如果说需要注册数据中心,这样才能使用demo部署数据中心license证需要申请,使用云之间-工作流程......

    如果说需要注册数据中心,这样才能使用demo部署数据中心license证需要申请,使用云之间-工作流程......

  9. HDU1029 - Ignatius and the Princess IV【水题】

    给你n个数字,请你找出出现至少(n+1)/2次的数字. 输入 本题包含多组数据,请处理到EOF: 每组数据包含两行. 第一行一个数字N(1<=N<=999999) ,保证N为奇数. 第二行 ...

  10. 51nod1117 聪明的木匠【贪心+优先队列】

    一位老木匠需要将一根长的木棒切成N段.每段的长度分别为L1,L2,......,LN(1 <= L1,L2,-,LN <= 1000,且均为整数)个长度单位.我们认为切割时仅在整数点处切且 ...