Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析


Posted in Python onApril 12, 2019

本文实例讲述了Python面向对象程序设计类变量与成员变量、类方法与成员方法用法。分享给大家供大家参考,具体如下:

类变量与成员变量

在类中声明的变量我们称之为类变量[静态成员变量],

init()函数中声明的变量并且绑定在实例上的变量我们称之为成员变量。

类变量直接可以通过类名来调用。

1、若类变量与成员同时存在并且同名

使用对象来调用的时候,获取的结果是成员变量的值,

使用类名来调用,获取的是类变量的值。

2、若类变量存在,成员变量不存在,

使用对象来调用的时候,它首先寻找成员变量,

如果成员变量不存在。则去寻找类变量。

3、若类变量不存在,成员变量存在:

使用类名来调用,则会报错

总结:

类变量通过类名或者对象来调用都不会报错,但是成员变量只能通过对象来调用。

通过对象来修改类属性的时候,只能作用到对象自己本身,作用不到类,

若是通过类名来修改类属性,则只对类变量的值进行修改。

class Person(object):
  # 类变量
  name = "haha"
  age = "19"
  height = 170
  def __init__(self,name,age,weight):
    # 成员变量
    self.name = name
    self.age = age
    self.weight = weight
  def sayHeight(self):
    print(self.height)
per = Person("xiaoming",19,50)
print(per.name)
print(Person.name)
# print(Person.weight)
per.height = 190
print(per.height)
print(Person.height)
print('*********')
Person.height = 200
print(Person.height)
print(per.height)
per.sayHeight()

输出:

xiaoming
haha
190
170
*********
200
190
190

类方法与成员方法

类方法,成员方法

类方法:使用类名来调用的方法

成员方法:使用对象来调用的方法

若一个方法定义在类中,但是没有参数[一般默认self],此时我们只能通过类名来调用

若我们需要使用到一个类的对象,首先要实例化。

class Person(object):
  def __init__(self,name,age):
    self.name = name
    self.age = age
  def say(self):
    print("I am %s, I am %d year old"%(self.name,self.age))
  def sayHello():
    print('hello I am class function')
per = Person("xiaoming",19)
per.say()
Person.sayHello()

输出:

I am xiaoming, I am 19 year old
hello I am class function

类方法与静态方法

静态方法

当调用此方法时,不会将类的实例传递给它。

在类中定义的函数。

无需实例化类,就可以调用。它的定义在继承中,是不可变的。

类方法:

当调用此方法时,将函数所属的类作为第一个参数传递。

class A(object):
    def foo(self, x):
      print("executing foo(%s, %s)" % (self, x))
    @classmethod
    def class_foo(cls, x):
      print("executing class_foo(%s, %s)" % (cls, x))
    @staticmethod
    def static_foo(x):
      print("executing static_foo(%s)" % x)
  a = A()
  # 调用foo函数,参数传入1
  a.foo(1)
  # 调用class_foo,参数传入1
  A.class_foo(1)
  # 调用static_foo,参数传入1
  A.static_foo(1)
  a.static_foo(1):

输出:

executing foo(<__main__.A object at 0x0000024F126489B0>, 1)
executing class_foo(<class '__main__.A'>, 1)
executing static_foo(1)
executing static_foo(1)

下划线

下划线定义特殊的方法,一般情况下是系统定义名字,
如:

__init()____del()__

前双下划线(age):表示私有类型的变量(privated),只能在本类中进行访问,外界不能直接访问。如__age.

单下划线(_age):以单下划线开头的表示保护类型变量(protected),

保护类型的变量只允许本身以及子类访问,不能用于from module import *

[使用单下划线开头的时候,虽然变量能够直接被访问,但是请把变量视为一个保护类型的变量,尽量不要去访问。

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

Python 相关文章推荐
使用python解析xml成对应的html示例分享
Apr 02 Python
python通过pil为png图片填充上背景颜色的方法
Mar 17 Python
Python的collections模块中的OrderedDict有序字典
Jul 07 Python
详解Python之unittest单元测试代码
Jan 24 Python
对python中使用requests模块参数编码的不同处理方法
May 18 Python
对python打乱数据集中X,y标签对的方法详解
Dec 14 Python
对Python 语音识别框架详解
Dec 24 Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 Python
对YOLOv3模型调用时候的python接口详解
Aug 26 Python
python如何处理程序无法打开
Jun 16 Python
python脚本定时发送邮件
Dec 22 Python
一文搞懂python异常处理、模块与包
Jun 26 Python
Python、 Pycharm、Django安装详细教程(图文)
Apr 12 #Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 #Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 #Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
Apr 12 #Python
Python实现的银行系统模拟程序完整案例
Apr 12 #Python
详解python--模拟轮盘抽奖游戏
Apr 12 #Python
Python实现的排列组合、破解密码算法示例
Apr 12 #Python
You might like
sql注入与转义的php函数代码
2013/06/17 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
Angular resolve基础用法详解
2018/10/03 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
2020/04/16 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
在Python中处理XML的教程
2015/04/29 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
python使用PyCharm进行远程开发和调试
2017/11/02 Python
python实现简易学生信息管理系统
2020/04/05 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
总监职责范文
2013/11/09 职场文书
架构师岗位职责
2013/11/18 职场文书
养殖人员的创业计划书范文
2013/12/26 职场文书
应聘编辑职位自荐信范文
2014/01/05 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
初一新生军训方案
2014/05/22 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
HTML常用标签超详细整理
2022/03/19 HTML / CSS