python的类变量和成员变量用法_Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析...
本文实例讲述了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面向对象程序设计类变量与成员变量、类方法与成员方法用法分析...相关推荐
- python中对类变量的访问形式_Python 面向对象中类、方法、变量、实例化和对象的概念,python定义类和访问权限?python三大支柱封装、继承和多态-立地货...
Python 面向对象搞懂Python类.方法.变量.实例化和对象的概念 面向对象技术简介 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.面 ...
- python定义私有变量的方法_Python面向对象程序设计之私有变量,私有方法原理与用法分析...
本文实例讲述了Python面向对象程序设计之私有变量,私有方法原理与用法.分享给大家供大家参考,具体如下: 私有变量,私有方法:python的私有化是为了规划私有属性,避免非相关的访问[假如!我有老婆 ...
- python在删除对象时会自动调用析构函数_Python面向对象程序设计构造函数和析构函数用法分析...
本文实例讲述了Python面向对象程序设计构造函数和析构函数用法.分享给大家供大家参考,具体如下: 构造函数和析构函数 1.构造方法的使用 很多类都倾向于将对象创建为有初始化状态.因此类可以定义一个名 ...
- python编程语言继承_Python面向对象程序设计类的封装与继承用法示例
本文实例讲述了Python面向对象程序设计类的封装与继承用法.分享给大家供大家参考,具体如下: 访问限制(封装) 1.概念 面向对象语言的三大特征:封装, 继承, 多态. 广义的封装: 类和函数的定义 ...
- python中chr的用法_python中chr()函数和ord()函数的用法
原博文 2018-06-11 21:52 − 一,chr()函数 格式:Chr(<数值表达式>) 说明:函数返回值类型为String,其数值表达式值取值范围为0~255. 例如:Print ...
- python 声明变量类型_python基础学习03数据类型和变量
数据类型和变量 1. 数据类型 1.1 整数 Python中不限制整数正负及大小,例如:1,-1,100,-100等等.计算机常用十进制和十六进制表示数值,比如十六进制表示方法是用前缀0x加后缀0-9 ...
- python中的多态用法_Python面向对象之多态原理与用法案例分析
本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...
- python modbus类封装_Python | 面向对象程序设计来了!
当当当,技术小E又来了! 经过前几次的基础贴的培训 相信很多同学对python的基础知识 已经有了一个简单的认识 那么下面我们来讲一讲 python面向对象程序设计. 我们在写程序的时候一般有两种方式 ...
- python不完全支持面向对象程序设计_Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】...
本文实例讲述了Python面向对象程序设计OOP.分享给大家供大家参考,具体如下: 类是Python所提供的最有用的的工具之一.合理使用时,类可以大量减少开发的时间.类也在流行的Python工具中使用 ...
最新文章
- 清华医工结合项目及三创项目与天津市27家重点医院对接
- 一口气说出 6种 延时队列的实现方案,大厂offer稳稳的
- 【洛谷 2330】繁忙的都市
- osg节点访问和遍历
- ext3 tree tbar 初始化定义
- 在php中怎么用js跳转页面跳转,在php中怎么用redirect实现页面跳转?
- 四级英语作文大学生使用计算机,大学生四级英语作文范文
- 关于StretchDIBits 可能返回失败的原因!
- 一键Pad变电脑,安全快速的远控办公这不就来了。
- 支付宝小程序唤起支付
- 通达信指标-MACD+均线交叉
- 智能管家---11. 用户重置密码功能实现(忘记密码或重置)
- 中国与印度软件工程师的比较
- 在线使用ChatGPT,国内手机号也可以注册。
- CCL: Cross-modal Correlation Learning With Multigrained Fusion by Hierarchical Network 论文笔记
- 笑死人不偿命的程序员内涵段子
- atmel c keil 包_Atmel SAM D21开发板试用心得 ——利用Keil5,全速运行
- java 启动方式 java -jar xx.jar
- 招生1400名!这所985高校发布2023年博士研究生招生简章!
- Mac如何使用python创建Excel文件,并进行内容写入
热门文章
- ubuntu10.04下安装Eclipse
- zookeeper + kafka集群搭建详解
- dataframe第二列 r语言_R语言-数据框
- ubutun安装MySQL hive配置_Hive安装以及部署(Ubuntu-MySql)
- 全面 Severless 化只需要 7天!
- 蚂蚁御术:我的前端十年成长之路
- 阿里数据:2020七大数据技术领域趋势展望
- 面向云数据库,超低延迟文件系统PolarFS诞生了
- c++11新特性_c++11新特性(四)
- 密码强度测试工具包【Java】_测试用例