#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-类变量,成员变量,静态变量,类方法,静态方法,实例方法,普通函数的更多相关文章

  1. python的类的 静态属性 类方法 静态方法

    一.静态属性 静态属性说的就是数据属性 1.定义一个房间的类,求下这个房间的面积 class Room: def __init__(self,name,ower,width,length,heigh) ...

  2. python - class类 (二) 静态属性/类方法/静态方法

    静态属性: #静态属性 = 数据属性 (@property) class mianji(): def __init__(self,x,y): self.x = x self.y = y #类的函数方法 ...

  3. Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象,

    Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象, 一.类 在ios中,类的声明和实现时分离的,也就是说不能写在同一个文件中,声明放在 .h文件中,实现放在 .m 文 ...

  4. java入门---变量类型&类变量&局部变量&实例变量&静态变量

        在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下:     type identifier [ = value][, identifier [= value] ...] ; ...

  5. java常量,变量,静态变量的理解

    最近考试出了一个很简单的题,看看他们对java常量,变量,静态变量的理解,代码如下: public class TestVar { /** * JAVA基础,常量,变量,静态变量 */ public ...

  6. Java中类变量(静态变量)和类方法(静态方法)

    类变量 类变量也叫静态变量或静态属性,是该类所有对象共享的变量任何一个该类的对象去访问它时,取得都是一样的值 语法: 访问修饰符  static  数据类型  变量名 static  访问修饰符  数 ...

  7. python 面向对象(成员,静态,类)的(变量,方法)区别

    静态方法是使用@staticmethod装饰的方法,并且参数表中不需要self或者cls,可以访问类成员变量 默认的方法是有self的,是成员方法,可以访问私有变量和方法(通过self.xxx),或者 ...

  8. Java中字段、属性、成员变量、局部变量、实例变量、静态变量、类变量、常量

    首先看个例子: package zm.demo; public class Demo { private int Id;//成员变量(字段).实例变量(表示该Id变量既属于成员变量又属于实例变量) p ...

  9. 牛客网Java刷题知识点之全局变量(又称成员变量,分为类变量和实例变量)、局部变量、静态变量(又称为类变量)

    不多说,直接上干货! 定义类其实就是在定义类中的成员.成员:成员变量<-->属性,成员函数<-->行为. 局部变量在方法内部声明,并且只能在方法内部使用,在外层的方法被调用时被 ...

  10. java===java基础学习(13)---this,static(静态变量和静态方法)的使用

    package dog; public class PersonAndDog { public static void main(String[] args) { Dogs da_huang = ne ...

随机推荐

  1. [转]PHP Session的一个警告

    警告全文如下: PHP Warning: Unknown: Your script possibly relies on a session side-effect which existed unt ...

  2. js post提交

    /* js跳转页面 url跳转地址,params参数列表 */ function Posturl(url,params){ //创建form表单 var temp_form=document.crea ...

  3. python 模块库

    python mod --------------------os              https://segmentfault.com/a/1190000003061079logging    ...

  4. 如何从eclipse中下载并导入Github上的项目

    eclipse导入项目,方法就是点击File ->Import,选择Existing Projects into Workspace 但前提是,你导入的这个项目原本就是用eclipse的构建的, ...

  5. SpringMvc JSON 406,吐血。。。。

    解决方法一: 1.导入jackson-core-2.5.1.jar和jackson-databind-2.5.1.jar 2.Spring配置文件添加: 1 spring3为:org.springfr ...

  6. 在线开发工具helper

    发现一个很有用的在线工具大全:http://tool.lu/ 同时,欢迎查看新开i云轩工作室: logo在线制作:http://www.uugai.com/

  7. Apache配置文件服务器

    配置Apache文件服务器: apache配置文件服务器httpd.conf中这两个模块必须不被注释LoadModule autoindex_module modules/mod_autoindex. ...

  8. 使用xpath的轴(Axis)进行元素定位

    使用Xpath轴方式可依据在文档数中的元素的相对位置来进行定位,先找到一个相对好定位的元素,在根据与它相对位置来定位其他元素,可以解决一些元素难以定位的问题.今天学习了,写下笔记加深下印象 如家HTM ...

  9. session management

    The session does not created until the HttpServletRequest.getSession() method is called.

  10. 洛谷P3392 涂国旗

    P3392 涂国旗 107通过 507提交 题目提供者kkksc03 标签 难度普及- 提交  讨论  题解 最新讨论 直接读字符会wa WA?-- 为什么不对... 跪求找错 快点给钱 这不就是荷兰 ...