文档章节

python的静态成员变量、实例成员变量、静态方法、类方法、实例方法

单蛙
 单蛙
发布于 2015/06/10 15:48
字数 476
阅读 2304
收藏 10
静态成员变量(类变量)和普通成员变量(实例变量)

  静态成员变量只能通过类名.变量名获得,实例成员变量,通过该实例引用.变量名获得。

  在实例对静态成员变量赋值时,实例

  python是动态类型的语言,没有特别的标志区分静态成员变量和普通成员变量

  如果你使用类名.成员变量    那这个成员变量现在就是静态成员变量(类变量)

  如果你使用实例.成员变量    那这个成员变量现在就是普通成员变量(实例变量)

  实例变量的值是什么时候初始化的,实例变量并不是构造对象的时候初始化的,而是在第一次通过对象调用该实例变量的
  时候,从类变量此时的值拷贝过来的,此后便互不影响。


静态方法、类方法、实例方法
 
   实例方法,类中的普通方法,由实例调用

   类方法,被@classmethod装饰的方法,类对象和实例都可以调用类方法

   静态方法,被@staticmethod装饰的方法,类对象和实例都可以调用静态方法,静态方法不会对任何实例造成影响

   实例方法和类方法的区别是,实例方法的第一个参数是self(实例本身),类方法的第一个参数是cls(类对象本省)

   注意:这里的类对象和实例对象的意思是 type(类名)---classobj
                                           type(实例名)-instance

   个人感觉静态的概念在python中真的没多大用 ,因为这是个动态语言。

  
 

© 著作权归作者所有

共有 人打赏支持
单蛙
粉丝 15
博文 47
码字总数 17407
作品 0
海淀
程序员
私信 提问
关于Python的类成员和Javascript的原型

偶然发现两个的设计思路是一致的(个人理解,欢迎指正)。这里简要分析一下: Python的类成员,也就是直接定义在类里的变量(实例成员是用self.x直接声明的),而类方法就是用@classmethod说...

Shawphy
2011/08/30
0
2
Python面向对象编程之我见

面向对象基本概念 面向对象是一种编程范式。范式是指一组方法论。编程范式是一组如何组织代码的方法论。编程范式指的是软件工程中的一种方法学。 一些主流的编程范式: OOP - 面向对象编程 ...

bigstone2012
2018/06/29
0
0
掌握面向对象编程本质,彻底掌握OOP

面向对象基本概念 面向对象是一种编程范式。范式是指一组方法论。编程范式是一组如何组织代码的方法论。编程范式指的是软件工程中的一种方法学。 一些主流的编程范式: OOP - 面向对象编程 ...

bigstone2012
2018/07/26
0
0
Python3基础之学习笔记(七)-面向对象

文章目录 1. 面向对象 1. 面向对象 1.1 面向对象介绍 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计),面向对象编程是一种编程方式,此编程方式需要使用 “类” 和 “...

GoldenKitten
01/15
0
0
SWIG入门4: C/C++初级特性2

1 structure 我看来,structure乃是封装之源。SWIG对于strucure的封装非常自然。自然的意思就是,C语言里怎么用PYTHON就怎么用。水里水里来,火里火里去。不过第一个问题就是,PYTHON作为面向...

costaxu
2012/08/18
0
1

没有更多内容

加载失败,请刷新页面

加载更多

求推广,德邦快递坑人!!!!

完全没想好怎么来吐槽自己这次苦逼的德邦物流过程了,只好来记一个流水账。 从寄快递开始: 2019年1月15日从 德邦物流 微信小app上下单,截图如下: 可笑的是什么,我预约的是17号上门收件,...

o0无忧亦无怖
30分钟前
1
0
Mac Vim配置

1.升级 vim   我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim --with-lua --with-override-system-vim 这将下...

Pasenger
43分钟前
0
0
vmware安装Ubuntu上不了网?上网了安装不了net-tools,无法执行ifconfig?

1.重新设置网络适配器还是不行,如下指定nat 2.还需要指定共享网络,我是在无线环境下 3.无法执行ifconfig https://packages.ubuntu.com/bionic/net-tools到这个网站下载net-tools的deb文件...

noob_chr
今天
1
0
解决SVN:E210007无法协商认证机制

svn:E210007 svn: Cannot negotiate authentication mechanism 执行下面代码即可 sudo yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-ldap...

临江仙卜算子
今天
1
0
java8的时间和`Date`的对比

java8的时间和Date的对比 java8提供了新的时间接口。相对Date,Calendar,个人感觉最大的好处是对时间操作的学习成本很低,比Calendar低。 1. LocalDate,LocalTime,LocalDateTime LocalDate 代...

北风刮的不认真了
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部