创建类

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class Employee:

'所有员工的基类'

empCount = 0

def __init__(self, name, salary):

self.name = name

self.salary = salary

Employee.empCount += 1

def displayCount(self):

print "Total Employee %d" % Employee.empCount

def displayEmployee(self):

print "Name : ", self.name, ", Salary: ", self.salary

empCount 变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 Employee.empCount 访问。

第一种方法 __init__() 方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法

self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

创建实例对象

"创建 Employee 类的第一个对象"

emp1 = Employee("Zara", 2000)

"创建 Employee 类的第二个对象"

emp2 = Employee("Manni", 5000)

访问属性

emp1.displayEmployee()

emp2.displayEmployee()

print "Total Employee %d" % Employee.empCount

添加,删除,修改及访问类的属性

emp1.age = 7 # 添加一个 'age' 属性

emp1.age = 8 # 修改 'age' 属性

del emp1.age # 删除 'age' 属性

# 你也可以使用以下函数的方式来访问属性:

hasattr(emp1, 'age') # 如果存在 'age' 属性返回 True。

getattr(emp1, 'age') # 返回 'age' 属性的值

setattr(emp1, 'age', 8) # 添加属性 'age' 值为 8

delattr(emp1, 'age') # 删除属性 'age'

Python内置类属性

__dict__ : 类的属性(包含一个字典,由类的数据属性组成)

__doc__ :类的文档字符串

__name__: 类名

__module__: 类定义所在的模块(类的全名是 '__main__.className',如果类位于一个导入模块mymod中,那么 className.__module__ 等于 mymod)

bases : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

析构函数

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class Point:

def __init__( self, x=0, y=0):

self.x = x

self.y = y

def __del__(self):

class_name = self.__class__.__name__

print class_name, "销毁"

pt1 = Point()

del pt1 # 销毁对象

类的继承

语法:

派生类的声明,与他们的父类类似,继承的基类列表跟在类名之后,如下所示:

class SubClassName (ParentClass1[, ParentClass2, ...]):

...

实例

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class Parent: # 定义父类

parentAttr = 100

def __init__(self):

print "调用父类构造函数"

def parentMethod(self):

print '调用父类方法'

def setAttr(self, attr):

Parent.parentAttr = attr

def getAttr(self):

print "父类属性 :", Parent.parentAttr

class Child(Parent): # 定义子类

def __init__(self):

print "调用子类构造方法"

def childMethod(self):

print '调用子类方法'

c = Child() # 实例化子类

c.childMethod() # 调用子类的方法

c.parentMethod() # 调用父类方法

c.setAttr(200) # 再次调用父类的方法 - 设置属性值

c.getAttr() # 再次调用父类的方法 - 获取属性值

方法重写

如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class Parent: # 定义父类

def myMethod(self):

print '调用父类方法'

class Child(Parent): # 定义子类

def myMethod(self):

print '调用子类方法'

c = Child() # 子类实例

c.myMethod() # 子类调用重写方法

类属性与方法

类的私有属性

__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs

类的方法

在类的内部,使用 def 关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数

类的私有方法

_private_method:两个下划线开头,声明该方法为私有方法,不能在类的外部调用。在类的内部调用 self.__private_methods

实例

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class JustCounter:

__secretCount = 0 # 私有变量

publicCount = 0 # 公开变量

def count(self):

self.__secretCount += 1

self.publicCount += 1

print self.__secretCount

counter = JustCounter()

counter.count()

counter.count()

print counter.publicCount

print counter.__secretCount # 报错,实例不能访问私有变量

单下划线、双下划线、头尾双下划线说明

__foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的。

_foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *

__foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。

python3 面向对象详解_Python3面向对象相关推荐

  1. python3字典详解_Python3字典操作详解 Python3字典操作大全

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:sking #Python3字典操作详解  Python3字典操作大全 #字典是无序的(因为它 ...

  2. python3字典详解_Python3实现的字典遍历操作详解

    本文实例讲述了Python3字典遍历操作.分享给大家供大家参考,具体如下: 字典是针对非序列集合而提供的一种数据类型. 通过任意键查找集合中值信息的过程叫映射,python通过字典实现映射. 为字典赋 ...

  3. python3字典详解_python3中字典详解

    字典(dict) 1. 创建字典的几种方式 class dict(**kwarg) class dict(mapping, **kwarg) class dict(iterable, **kwarg) ...

  4. python3字典详解_Python3中Dictionary(字典)操作详解

    在绝大部分的开发语言中与实际开发过程中,Dictionary扮演着举足轻重的角色.从我们的数据模型到服务器返回的参数到数据库的应用等等,Dictionary的身影无处不在.那么,在Python中,Di ...

  5. php开发面试题---php面向对象详解(对象的主要三个特性)

    php开发面试题---php面向对象详解(对象的主要三个特性) 一.总结 一句话总结: 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为. 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸 ...

  6. 【LOL DOTA】面向对象详解

    [LOL && DOTA]面向对象详解 文章目录 [LOL && DOTA]面向对象详解 一.设计英雄类class 二.创建具体的英雄 相信你肯定玩过DOTA或者LOL ...

  7. C++学习笔记章节中 面向对象详解

    C++ 类&对象 C++类定义 本质上是一个数据类型的蓝图,定义了类的对象包含的信息,以及可以在这个类对象上执行哪些操作. 类的定义是以class开头,后面接类的名称. 类的主体是包含在一个花 ...

  8. javascript 本地对象和内置对象_详解 JavaScript 面向对象

    1. 概述 JavaScript面向对象比较难理解的点是类的继承.不管是es5写法还是es6写法,JavaScript继承的本质是原型链.具体可看我的上一篇文章: 田浩:详解原型.原型链.构造函.实例 ...

  9. 面向对象 详解笔记 方法 类 对象 封装 继承 重写 多态 接口

    文章目录 面向过程&面向对象 面向过程 面向对象 什么是面向对象 回顾方法及加深 方法的定义 修饰符 返回类型 break:跳出switch,结束循环和return的区别 方法名:注意规范就o ...

最新文章

  1. windows模糊查询指定进程是否存在
  2. xshell下载mysql到本地文件_在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹)-Go语言中文社区...
  3. OpenCV使用蒙版mask过滤图像的实例(附完整代码)
  4. 看新排美国话剧《哗变》
  5. 你与一份好简历之间的距离
  6. win7关闭休眠_【科普】笔记本电脑,待机/睡眠/休眠有啥区别?(ACPI SPM S0-S5)...
  7. python里面的数学
  8. day12 java的方法覆盖(重写)
  9. X 分钟速成 Python
  10. modbus通讯失败_你以为你真的了解Modbus 通信协议?
  11. Java 杨辉三角形
  12. Qt怎么实现将bmp图片转换成Ascii_你保存的word和pdf文档图片为什么变模糊了?
  13. lcd改led背光有光斑_So Easy! LCD液晶电视改LED背光,你也可以!
  14. 2007五一[西北行] - 第二天:延安(窑洞,杨家岭,宝塔山...)
  15. 用什么软件免费查重呢?4款比较靠谱的论文查重软件值得一试
  16. 制作简单的指纹图集,并对其进行处理
  17. 纯净正版 WIN10 安装文件官方下载
  18. D. Little Girl and Maximum XOR(贪心)
  19. android 监控行为,一种针对Android系统App行为的监控方法
  20. AsyncTask的优缺点

热门文章

  1. oracle isextis,OGG-01052 No recovery is required for target file /ogg/tail_ext/et000000, at...
  2. P1433 吃奶酪(状压dp)
  3. 从贝泰妮的全域消费者运营,看Quick Audience如何链接产品服务商生态
  4. 基于函数计算的游戏打包最佳实践
  5. Gartner魔力象限到底有何“魔力”?
  6. 云原生时代,微服务如何演进?
  7. 自研云原生数据仓库AnalyticDB再破权威评测TPC-DS世界纪录!
  8. 手机游戏美术外包的四大优点及三大建议
  9. 聊聊《战魂铭人》的游戏设计
  10. Linux的java服务配置步骤