本文实例讲述了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(, 1)

executing static_foo(1)

executing static_foo(1)

下划线

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

如:

__init()__、__del()__

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

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

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

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

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

python的类变量和成员变量用法_Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析...相关推荐

  1. python中对类变量的访问形式_Python 面向对象中类、方法、变量、实例化和对象的概念,python定义类和访问权限?python三大支柱封装、继承和多态-立地货...

    Python 面向对象搞懂Python类.方法.变量.实例化和对象的概念 面向对象技术简介 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.面 ...

  2. python定义私有变量的方法_Python面向对象程序设计之私有变量,私有方法原理与用法分析...

    本文实例讲述了Python面向对象程序设计之私有变量,私有方法原理与用法.分享给大家供大家参考,具体如下: 私有变量,私有方法:python的私有化是为了规划私有属性,避免非相关的访问[假如!我有老婆 ...

  3. python在删除对象时会自动调用析构函数_Python面向对象程序设计构造函数和析构函数用法分析...

    本文实例讲述了Python面向对象程序设计构造函数和析构函数用法.分享给大家供大家参考,具体如下: 构造函数和析构函数 1.构造方法的使用 很多类都倾向于将对象创建为有初始化状态.因此类可以定义一个名 ...

  4. python编程语言继承_Python面向对象程序设计类的封装与继承用法示例

    本文实例讲述了Python面向对象程序设计类的封装与继承用法.分享给大家供大家参考,具体如下: 访问限制(封装) 1.概念 面向对象语言的三大特征:封装, 继承, 多态. 广义的封装: 类和函数的定义 ...

  5. python中chr的用法_python中chr()函数和ord()函数的用法

    原博文 2018-06-11 21:52 − 一,chr()函数 格式:Chr(<数值表达式>) 说明:函数返回值类型为String,其数值表达式值取值范围为0~255. 例如:Print ...

  6. python 声明变量类型_python基础学习03数据类型和变量

    数据类型和变量 1. 数据类型 1.1 整数 Python中不限制整数正负及大小,例如:1,-1,100,-100等等.计算机常用十进制和十六进制表示数值,比如十六进制表示方法是用前缀0x加后缀0-9 ...

  7. python中的多态用法_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  8. python modbus类封装_Python | 面向对象程序设计来了!

    当当当,技术小E又来了! 经过前几次的基础贴的培训 相信很多同学对python的基础知识 已经有了一个简单的认识 那么下面我们来讲一讲 python面向对象程序设计. 我们在写程序的时候一般有两种方式 ...

  9. python不完全支持面向对象程序设计_Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】...

    本文实例讲述了Python面向对象程序设计OOP.分享给大家供大家参考,具体如下: 类是Python所提供的最有用的的工具之一.合理使用时,类可以大量减少开发的时间.类也在流行的Python工具中使用 ...

最新文章

  1. 清华医工结合项目及三创项目与天津市27家重点医院对接
  2. 一口气说出 6种 延时队列的实现方案,大厂offer稳稳的
  3. 【洛谷 2330】繁忙的都市
  4. osg节点访问和遍历
  5. ext3 tree tbar 初始化定义
  6. 在php中怎么用js跳转页面跳转,在php中怎么用redirect实现页面跳转?
  7. 四级英语作文大学生使用计算机,大学生四级英语作文范文
  8. 关于StretchDIBits 可能返回失败的原因!
  9. 一键Pad变电脑,安全快速的远控办公这不就来了。
  10. 支付宝小程序唤起支付
  11. 通达信指标-MACD+均线交叉
  12. 智能管家---11. 用户重置密码功能实现(忘记密码或重置)
  13. 中国与印度软件工程师的比较
  14. 在线使用ChatGPT,国内手机号也可以注册。
  15. CCL: Cross-modal Correlation Learning With Multigrained Fusion by Hierarchical Network 论文笔记
  16. 笑死人不偿命的程序员内涵段子
  17. atmel c keil 包_Atmel SAM D21开发板试用心得 ——利用Keil5,全速运行
  18. java 启动方式 java -jar xx.jar
  19. 招生1400名!这所985高校发布2023年博士研究生招生简章!
  20. Mac如何使用python创建Excel文件,并进行内容写入

热门文章

  1. ubuntu10.04下安装Eclipse
  2. zookeeper + kafka集群搭建详解
  3. dataframe第二列 r语言_R语言-数据框
  4. ubutun安装MySQL hive配置_Hive安装以及部署(Ubuntu-MySql)
  5. 全面 Severless 化只需要 7天!
  6. 蚂蚁御术:我的前端十年成长之路
  7. 阿里数据:2020七大数据技术领域趋势展望
  8. 面向云数据库,超低延迟文件系统PolarFS诞生了
  9. c++11新特性_c++11新特性(四)
  10. 密码强度测试工具包【Java】_测试用例