Python 面向对象之类class和对象基本用法示例


Posted in Python onFebruary 02, 2020

本文实例讲述了Python 面向对象之类class和对象基本用法。分享给大家供大家参考,具体如下:

类(class):定义一件事物的抽象特点,usually,类定义了事物的属性和它可以做到的性为

对象(object):是类的实例。

1.基本点

class MyClass(object):
  message = "hello,world"
  def show(self):
    print (self.message)

类名为MyClass 有一个成员变量:message,并赋予初值
类中定义了成员函数show(self),注意类中的成员函数必须带有参数self
参数self是对象本身的引用,在成员函数中可以引用self参数获得对象的信息

输出结果:

inst = Myclass() # 实例化一个MyClass 的对象
inst.show # 调用成员函数,无需传入self参数
hello,world

注: 通过在类名后面加小括号可以直接实例化类来获得对象变量,使用对象变量可以访问类的成员函数与成员变量。

2.构造函数

构造函数是一种特殊的类成员方法,主要用来创建对象初始化,python 中的类构造函数用__init__命名:

class MyClass(object):
  message = 'Hello, Developer.'
  def show(self):
    print self.message
  def __init__(self):
    print "Constructor is called"
inst = MyClass()
inst.show()
>>>

打印结果:

>>>Constructor is called
>>>Hello, Developer.

注:构造函数不能有返回值,python 中不能定义多个构造函数,但可以通过为命名参数提供默认值的方式达到用多种方式构造对象的目的。

3.析构函数

是构造的反向函数,在销毁或者释放对象时调用他们。

python 中为类定义析构函数的方法在类定义中定义一个名为__del__的没有返回值和参数的函数。

class MyClass(object):
  message = 'Hello, Developer.'
  def show(self):
    print self.message
  def __init__(self, name = "unset", color = "black"):
    print "Constructor is called with params: ",name, " ", color
  def __del__(self):
    print "Destructor is called!"
inst = MyClass()
inst.show()
inst2 = MyClass("David")
inst2.show()
del inst, inst2
inst3 = MyClass("Lisa", "Yellow")
inst3.show()
del inst3
>>>

打印结果:

Constructor is called with params:  unset   black
Hello, Developer.
Constructor is called with params:  David   black
Hello, Developer.
Destructor is called!
Destructor is called!
Constructor is called with params:  Lisa   Yellow
Hello, Developer.
Destructor is called!

4.实例成员变量

构造函数中定义self引用的变量,因此这样的成员变量在python中叫做实例成员变量。

def __init__(self, name = "unset", color = "black"):
  print "Constructor is called with params: ",name, " ", color
  self.name = name
  self.color = color

5.静态函数和类函数:

python 支持两种基于类名访问成员的函数:静态函数,类函数。
区别在于:类函数有一个隐形参数cls可以用来获取类信息。而静态函数没有该函数。
静态函数用装饰器:@staticmethod定义
类函数使用装饰器:@classmethod定义

class MyClass(object):
  message = 'Hello, Developer.'
  def show(self):
    print (self.message)
    print ("Here is %s in %s!" % (self.name, self.color))
  @staticmethod
  def printMessage():
    print ("printMessage is called")
    print (MyClass.message)
  @classmethod
  def createObj(cls, name, color):
    print ("Object will be created: %s(%s, %s)"% (cls.__name__, name, color))
    return cls(name, color)
  def __init__(self, name = "unset", color = "black"):
    print ("Constructor is called with params: ",name, " ", color)
    self.name = name
    self.color = color
  def __del__(self):
    print ("Destructor is called for %s!"% self.name)
MyClass.printMessage()
inst = MyClass.createObj( "Toby", "Red")
print (inst.message)
del inst

输出结果:

printMessage is called
Hello, Developer.
Object will be created: MyClass(Toby, Red)
Constructor is called with params:  Toby   Red
Hello, Developer.
Destructor is called for Toby!

6.私有成员

python 使用指定变量名格式的方法定义私有成员,即所有以双下划线“__”开始命名的成员都为私有成员。

class MyClass(object):
  def __init__(self, name = "unset", color = "black"):
    print "Constructor is called with params: ",name, " ", color
    self.__name = name
    self.__color = color
  def __del__(self):
    print "Destructor is called for %s!"% self.__name
inst = MyClass("Jojo", "White")
del inst

输出结果:

Constructor is called with params:  Jojo   White
Destructor is called for Jojo!

注明:书《Python 高效开发实战Django, Tornado, Flask, Twisted》总结

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python urlopen 使用小示例
Sep 06 Python
Python中的fileinput模块的简单实用示例
Jul 09 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
Python pip使用超时问题解决方案
Aug 03 Python
Python制作数据预测集成工具(值得收藏)
Aug 21 Python
python/golang实现循环链表的示例代码
Sep 14 Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 Python
python list的index()和find()的实现
Nov 16 Python
python 如何引入协程和原理分析
Nov 30 Python
python des,aes,rsa加解密的实现
Jan 16 Python
flask 框架操作MySQL数据库简单示例
Feb 02 #Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 #Python
使用Python操作ArangoDB的方法步骤
Feb 02 #Python
详解有关PyCharm安装库失败的问题的解决方法
Feb 02 #Python
Python 模拟生成动态产生验证码图片的方法
Feb 01 #Python
Python递归及尾递归优化操作实例分析
Feb 01 #Python
Python异步编程之协程任务的调度操作实例分析
Feb 01 #Python
You might like
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
JS delegate与live浅析
2013/12/21 Javascript
谷歌浏览器调试JavaScript小技巧
2014/12/29 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
2016/12/08 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
2018/09/13 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
python中import reload __import__的区别详解
2017/10/16 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
浅析python 中大括号中括号小括号的区分
2019/07/29 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
Python 里最强的地图绘制神器
2021/03/01 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
日本著名的平价时尚女性购物网站:Fifth
2016/08/24 全球购物
中式面点餐厅创业计划书
2014/01/29 职场文书
小学教师评语大全
2014/04/23 职场文书
家长学校工作方案
2014/05/07 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL