Python-类变量,成员变量,静态变量,类方法,静态方法,实例方法,普通函数
#coding:utf-8 class class_name(object):
class_var = 'I am a class variable' #类变量
def __init__(self):
self.instance_var = 'I am a instance varibale' #成员变量(实例变量) def instance_method(self, formal_parameter):
local_var_in_function = formal_parameter #实例方法局部变量
self.local_var_also_in_function = formal_parameter #实例方法局部变量 def ordinary_function(formal_parameter):
print "I am an ordinary function, I can't vist class var and intance var"
print self.instance_var #报错,因此普通函数无法访问成员函数
print clacc_var#报错,因此普通函数无法访问类变量 @classmethod
def class_method(cls, formal_parameter): #类方法
print 'I am class method, I can visit class var and instance var' print 'I am class method, I am modifying the instance var'
cls.instance_var = formal_parameter
print cls.instance_var print 'I am class method, I am modifying the class var'
class_var = formal_parameter
print class_var @staticmethod
def static_method(formal_parameter):
print 'I am static method, I am the Adopted son(干儿子) for this class!!' print "I can't modify anything in the class "
#print class_var
#print self.instance_var print 'Get a class instance'
class_instance = class_name()
print '\r'
print "My name is class_instance, I can call class_method, " \
"statics_method, instance_method and instance_method, but I can't call ordinary_function"
print "I can show you:"
print '\r'
class_instance.class_method('class method is calling!!')
print '\r'
class_instance.static_method('static method in calling!!')
print '\r'
class_instance.instance_method('instance method is calling!!')
print '\r'
print 'class var is calling!!'
print class_instance.class_var
print '\r'
print 'instance var is calling!!'
print class_instance.instance_var
print '\r'
print 'Get a class!!'
print '\r'
print 'My name is class_name, I can call class_method, statics_method, instance_method, instance_method, and ordinary_function'
print "I can show you:"
print '\r'
class_name.class_method('class method is calling!!')
print '\r'
class_name.static_method('static method in calling!!')
print '\r'
#class_name.instance_method("instance method can't be calling!!")
print '\r'
print 'class var is calling!!'
print class_name.class_var
print '\r'
print 'instance var is calling!!'
print class_name.instance_var
print 'END!!' Result:
Get a class instance
My name is class_instance, I can call class_method, statics_method, instance_method and instance_method, but I can't call ordinary_function
I can show you:
I am class method, I can visit class var and instance var
I am class method, I am modifying the instance var
class method is calling!!
I am class method, I am modifying the class var
class method is calling!!
I am static method, I am the Adopted son(干儿子) for this class!!
I can't modify anything in the class
class var is calling!!
I am a class variable
instance var is calling!!
I am a instance varibale
Get a class!!
My name is class_name, I can call class_method, statics_method, instance_method, instance_method, and ordinary_function
I can show you:
I am class method, I can visit class var and instance var
I am class method, I am modifying the instance var
class method is calling!!
I am class method, I am modifying the class var
class method is calling!!
I am static method, I am the Adopted son(干儿子) for this class!!
I can't modify anything in the class
class var is calling!!
I am a class variable
instance var is calling!!
class method is calling!!
END!!
类变量:
类定义内部定义的变量(愚见,可以认为类内部没有self开头定义的变量,可以认为是类变量)
e.g. class_name中的class_var = 'I am a class variable' #类变量
成员变量:
类定义内部__init__函数内以self开头定义的变量
e.g. self.instance_var = 'I am a instance varibale' #成员变量(实例变量)
静态变量:
因为Python是动态语言,不存在完全静态的变量,这个概念查阅相关资料后认为指的就是类内部定义的类变量(欢迎指正)
类方法:
类内部定义的以@classmethod装饰的函数是类方法,类方法的调用关系可以通过print后的表述得知。
e.g.
@classmethod
def class_method(cls, formal_parameter): #类方法
print 'I am class method, I can visit class var and instance var' print 'I am class method, I am modifying the instance var'
cls.instance_var = formal_parameter
print cls.instance_var print 'I am class method, I am modifying the class var'
class_var = formal_parameter
print class_var
静态方法:
类内部定义的以@staticmethod装饰的函数,类方法的调用关系可以通过print后的表述得知。
e.g.
@staticmethod
def static_method(formal_parameter):
print 'I am static method, I am the Adopted son(干儿子) for this class!!' print "I can't modify anything in the class "
#print class_var
#print self.instance_var
实例方法:
类内部定义的没有装饰器且第一个参数为self的函数,类方法的调用关系可以通过print后的表述得知。
e.g.
def instance_method(self, formal_parameter):
local_var_in_function = formal_parameter #实例方法局部变量
self.local_var_also_in_function = formal_parameter #实例方法局部变量
普通函数:
类内部定义的既没有装饰器,也没有参数self的函数,类方法的调用关系可以通过print后的表述得知。
e.g.
def ordinary_function(formal_parameter):
print "I am an ordinary function, I can't vist class var and intance var"
print self.instance_var #报错,因此普通函数无法访问成员函数
print clacc_var#报错,因此普通函数无法访问类变量
[1]. http://www.cnblogs.com/kex1n/p/5979366.html
[2]. http://www.cnblogs.com/funfunny/p/5892212.html
[3]. http://blog.csdn.net/linda1000/article/details/8710161
[4]. http://blog.csdn.net/gzhouc/article/details/46785797
[5]. http://blog.csdn.net/xhw88398569/article/details/48976001
[6]. http://www.cnblogs.com/Simon-xm/p/3890942.html
Python-类变量,成员变量,静态变量,类方法,静态方法,实例方法,普通函数的更多相关文章
- python的类的 静态属性 类方法 静态方法
一.静态属性 静态属性说的就是数据属性 1.定义一个房间的类,求下这个房间的面积 class Room: def __init__(self,name,ower,width,length,heigh) ...
- python - class类 (二) 静态属性/类方法/静态方法
静态属性: #静态属性 = 数据属性 (@property) class mianji(): def __init__(self,x,y): self.x = x self.y = y #类的函数方法 ...
- Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象,
Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象, 一.类 在ios中,类的声明和实现时分离的,也就是说不能写在同一个文件中,声明放在 .h文件中,实现放在 .m 文 ...
- java入门---变量类型&类变量&局部变量&实例变量&静态变量
在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; ...
- java常量,变量,静态变量的理解
最近考试出了一个很简单的题,看看他们对java常量,变量,静态变量的理解,代码如下: public class TestVar { /** * JAVA基础,常量,变量,静态变量 */ public ...
- Java中类变量(静态变量)和类方法(静态方法)
类变量 类变量也叫静态变量或静态属性,是该类所有对象共享的变量任何一个该类的对象去访问它时,取得都是一样的值 语法: 访问修饰符 static 数据类型 变量名 static 访问修饰符 数 ...
- python 面向对象(成员,静态,类)的(变量,方法)区别
静态方法是使用@staticmethod装饰的方法,并且参数表中不需要self或者cls,可以访问类成员变量 默认的方法是有self的,是成员方法,可以访问私有变量和方法(通过self.xxx),或者 ...
- Java中字段、属性、成员变量、局部变量、实例变量、静态变量、类变量、常量
首先看个例子: package zm.demo; public class Demo { private int Id;//成员变量(字段).实例变量(表示该Id变量既属于成员变量又属于实例变量) p ...
- 牛客网Java刷题知识点之全局变量(又称成员变量,分为类变量和实例变量)、局部变量、静态变量(又称为类变量)
不多说,直接上干货! 定义类其实就是在定义类中的成员.成员:成员变量<-->属性,成员函数<-->行为. 局部变量在方法内部声明,并且只能在方法内部使用,在外层的方法被调用时被 ...
- java===java基础学习(13)---this,static(静态变量和静态方法)的使用
package dog; public class PersonAndDog { public static void main(String[] args) { Dogs da_huang = ne ...
随机推荐
- 使用npm安装一些包失败了的看过来(npm国内镜像介绍)
这个也是网上搜的,亲自试过,非常好用! 镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在): 1.通过config命令 npm config set reg ...
- Redis的AOF是怎么实现的
今天通过阅读AOF的实现代码,牵出了许多本来不是必须的话题,也都记下来先: Redis自己搞了一套事件循环机制: http://itindex.net/detail/26944-redis-%E4%B ...
- 测试dockerfile
测试dockerfile是否ok(比如我的Dockerfile在deploy目录下) docker build -t my_image -f deploy/Dockerfile . docker im ...
- Sqlite小数作差,会减不尽?
select 6307.65-5922.68 from CW_ZWMX 以上语句,在设Navigate中执行的结果是:384.969999999999 不解!!!
- java程序转换excel中科学记数法的数据为date类型
今天出于某些原因从mongodb数据库中导出了一些数据,为了更直观的发送给其他人查阅,便使用mongoVUE的导出为excel功能. 但是导出后出现了一个问题,里边有一列存储时间的,存储的是lon ...
- DHTMLX-Grid
DHTMLX - Grid 介绍 dhtmlxGrid是一个灵活的.易于使用的JavaScript网格组件,可以创建DHTML表与丰富的编辑- sensing,固定的多行页眉和页脚,可调整大小的.可拖 ...
- Hibernate5.2之多对多关联关系(六)
Hibernate5.2之多对多关联关系(六) 一.简介 Hibernate中多对多关联关系在工程中使用的频率也是非常高的,例如:大学中学生选课.用户订单等.在本博客中笔者一样通过实例代码为读者阐述H ...
- Struts2中Action由自己与由Spring管理的区别
struts2单独使用时action由struts2自己负责创建:与spring集成时,action实例由spring负责创建. 这导致在两种情况下struts.xml配置文件的略微差异. 假如: ...
- STL中list和vector在添加元素时push_back会调用拷贝构造函数
#include <iostream> #include <list> #include <vector> #include <cstring> usi ...
- CSS盒子模型与box-sizing
今天在学习的时候偶然看到一张图片: 我瞬间瞪大了眼睛:width和height竟然不包括padding和border!! 过去所学知识有问题!在我的印象里,width应该是包含padding和bord ...