Python中的self,cls参数

python类里会出现这三个单词,self和cls都可以用别的单词代替,类的方法有三种,

一是通过def定义的 普通的一般的,需要至少传递一个参数,一般用self,这样的方法必须通过一个类的实例去访问,类似于c++中通过对象去访问;

二是在def前面加上@classmethod,这种类方法的一个特点就是可以通过类名去调用,但是也必须传递一个参数,一般用cls表示class,表示可以通过类直接调用;

三是在def前面加上@staticmethod,这种类方法是静态的类方法,类似于c++的静态函数,他的一个特点是参数可以为空,同样支持类名和对象两种调用方式;

代码:

[python] view
plain
copy

  1. class A:
  2. member = "this is a test."
  3. def __init__(self):
  4. pass
  5. @classmethod
  6. def Print1(cls):
  7. print "print 1: ", cls.member
  8. def Print2(self):
  9. print "print 2: ", self.member
  10. @classmethod
  11. def Print3(paraTest):
  12. print "print 3: ", paraTest.member
  13. @staticmethod
  14. def print4():
  15. print "hello"
  16. a = A()
  17. A.Print1()
  18. a.Print1()
  19. #A.Print2()
  20. a.Print2()
  21. A.Print3()
  22. a.Print3()
  23. A.print4()

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 08:24:58

Python中的self,cls参数的相关文章

Python中list作为默认参数的陷阱

在Python中,作为默认参数的一定要是不可变对象,如果是可变对象,就会出现问题,稍不注意,就会调入陷阱,尤其是初学者,比如我(┬_┬). 我们来看一个例子. 1 def add(L=[]): 2 L.append(1) 3 return L 4 5 L = [1, 2, 3] 6 newL = add(L) 7 print(newL) 8 newL = add(newL) 9 print(newL) 10 11 testL = add() 12 print(testL) 13 testL =

Python 中 open() 的 mode 参数总结

参考 : http://www.newsmth.net/nForum/#!article/Python/54311 pydoc 中的 file 一节 Python 中打开一个文件的函数 open() 的第二个参数指明了打开的模式. 可以赋予该参数的实参 *枚举* 如下 : 'r', 'r+', 'w', 'w+', 'a', 'a+', 'rU' 其中 : 'r' : 以只读模式打开 'r+' : 以读写模式打开, 写的指针刚开始指在文件开头, 因此会覆写文件 'w' : 清空文件, 不能使用

python中定义函数和参数的传递问题

作者:達聞西链接:https://zhuanlan.zhihu.com/p/24162430来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 5.2.4 函数.生成器和类 还是从几个例子看起: def say_hello(): print('Hello!') def greetings(x='Good morning!'): print(x) say_hello() # Hello! greetings() # Good morning! greetings("Wh

python中self,cls

cls主要用在类方法定义,而self则是实例方法. self, cls 不是关键字,完全可以使用自己写的任意变量代替实现一样的效果. 普通的实例方法,第一个参数需要是self,它表示一个具体的实例本身.如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用.而对于classmethod,它的第一个参数不是self,是cls,它表示这个类本身.>>> class A(object): def foo1(self):        print &qu

在python中,用默认参数(list,set,dict...)时要小心

在我们平时写需求的时候,如果没有了解到以下知识点,可能会出现这样的问题,掉进坑里面,甚至很难找到问题的根源.下面我们来看看使用可变默认参数(Mutable default arguments)时会出现什么诡异的情况. 你可能写了以下函数,它有一个默认参数是一个list: def append_to(element, to=[]): to.append(element) return to 然后调用该函数: my_list = append_to(12) print(my_list) my_oth

python中命令行参数

python中的命令行参数 python中有一个模块sys,sys.argv这个属性提供了对命令行参数的访问.命令行参数是调用某个程序时除程序名外的其他参数. sys.argv是命令行参数的列表 len(sys.argv)是命令行参数的个数 下面我们用一个简单的例子来说明一下. #!/usr/bin/python #coding:utf-8 import sys ##加载sys这个模块. for i in range(len(sys.argv)): print "第%d个参数是:%s"

Python中的可变参数和关键字参数

刚开始接触 python 的时候,对 python 中的 *wargs (可变参数) 和 **kwargs (关键字参数)的理解不是很透彻,看了一下 <Explore Python>一书,里面对这一部分的描述相对浅显易懂, 这里依据个人理解进行相关总结. 可变参数(*args) 对于可变参数可以联想到 C# 中的可变参数.可变参数是一个数量不确定的列表集合,可以是 list 类型,也可以是 tuple 类型 我们定义如下代码段: def add(*numbers): print(type(nu

【转载】Python中如何高效实现两个字典合并,三种方法比较。

本文转载自:http://www.pythoner.com/13.html Python中将两个字典进行合并操作,是一个比较常见的问题.本文将介绍几种实现两个字典合并的方案,并对其进行比较. 对于这个问题,比较直观的想法是将两个字典做相加操作,赋值给结果字典,其代码为: 方法一: dictMerged1 = dict( dict1.items() + dict2.items() ) 然而,该方法合并时所用时间较长,效率更高的代码为: 方法二: dictMerged2 = dict( dict1,

python 中面向对象编程简单总结2

1.python中继承的特点: (1)总是从一个类继承,默认为object类 (2)不要忘记调用super.__init__方法来初始化父类的方法 def __init__(self,args): super(Subclass,self).__init__(args) pass 简单例子 class Person(object): def __init__(self,name,gender): self.name = name self.gender = gender class Student