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中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
python基础教程之对象和类的实际运用
Aug 29 Python
Python2.x版本中maketrans()方法的使用介绍
May 19 Python
python 循环遍历字典元素的简单方法
Sep 11 Python
Python中 map()函数的用法详解
Jul 10 Python
pytorch使用指定GPU训练的实例
Aug 19 Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 Python
Python实现非正太分布的异常值检测方式
Dec 09 Python
Python.append()与Python.expand()用法详解
Dec 18 Python
Python StringIO如何在内存中读写str
Jan 07 Python
容易被忽略的Python内置类型
Sep 03 Python
用python对excel查重
Dec 07 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模板技术原理【一】
2008/01/10 PHP
destoon二次开发入门示例
2014/06/20 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
Python 忽略文件名编码的方法
2020/08/01 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
本科毕业生的求职信范文
2013/11/20 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
校庆标语集锦
2014/06/25 职场文书
党员批评与自我批评发言稿
2014/10/14 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
2014年手术室工作总结
2014/11/26 职场文书
2014年防汛工作总结
2014/12/08 职场文书
辞职信标准格式
2015/02/27 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技