python类中的self参数和cls参数

1. self表示一个类的实例对象本身。如果用了staticmethod就无视这个self了,就将这个方法当成一个普通的函数使用了。

2. cls表是这个类本身。

# 代码为证
class A(object):
    def func1(self):
        print("func1:", self)
    @staticmethod
    def func2():
        print("func2")
    @classmethod
    def func3(cls):
        print("func3:", cls)

a = A()

a.func1()  #  最常见的调用方式,但与下面的方式相同
           #  func1: <__main__.A object at 0x0000014788701EB8>

A.func1(a) #  这里传入实例a,相当于普通方法的self
           #  func1: <__main__.A object at 0x0000014788701EB8>

A.func2()  # 这里,由于静态方法没有参数,故可以不传东西
           # func2:

A.func3()  # 这里,由于是类方法,因此,它的第一个参数为类本身。
           # func3: <class ‘__main__.A‘>

print(A)   # 可以看到,直接打印A,与上面那种调用返回同样的信息。
           # <class ‘__main__.A‘>

3. 更多: 类先调用__new__方法,返回该类的实例对象,这个实例对象就是__init__方法的第一个参数self,即self是__new__的返回值。

原文地址:https://www.cnblogs.com/aaronthon/p/9205464.html

时间: 2024-11-09 03:04:20

python类中的self参数和cls参数的相关文章

Python 类中的 self?

什么是 self ? 它是类实例自身的引用.其他语言通常使用一个名为 this 的标识符 --<Python核心编程> 如何定义类: class ClassName(base_class[es]):  (1) "optional documentation string" static_member_declarations #类静态成员声明 method_declarations #类方法声明 (1) 括号内位基类,如果没有,就实用object作为基类 .....待续 P

两幅图说明python类中self的含义

总结:self是对于对象自身的引用.这里的圆括号里的self也可以换成其它你想要的任意名称,只是self更形象和通用些. 两幅图说明python类中self的含义

python 类中staticmethod,classmethod,普通方法

1.staticmethod:静态方法和全局函数类似,但是通过类和对象调用. 2.classmethod:类方法和类相关的方法,第一个参数是class对象(不是实例对象).在python中class也是一个真实存在于内存中的对象,不同于其他语言只存在于编译期间. 3.普通方法和实例相关的方法,通过类实例调用. 4.代码示例 #coding:utf-8 ''' Created on 2015年5月29日 @author: canx ''' class Person: def __init__(se

python 类中的某个函数作为装饰器

在python的类中,制作一个装饰器的函数, class A: def wrapper(func): ###装饰器 def wrapped(self,*arg,**kwargs) ... return wrapped @ wrapper ###装饰mix def mix(): ... 当调用mix的时候,self.mix() ,会将self等参数传入 wrapper 中来吗?答案为否. 当wrapper作为装饰器的并且@wrapper这种方式作为装饰的时候,wrapper就跟普通的函数一样,仅仅

python类中super()和__init__()的区别

本文和大家分享的主要是python开发中super()和__init__()的区别,希望通过本文的分享,对初学者学习这部分内容有所帮助. 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(self): print 'Base create' class childA(Base): def __init__(self): print 'creat A ', Base.__init__(self) class chi

8.python之面相对象part.6(python类中的多态与多态性)

一.什么是多态性? 多态性依赖于类的继承特性和派生特性,多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数. 为了更好的理解,接下来拿len()函数来举个例子: len()函数的功能是用来求一个序列的长度,那么len()这个函数是如何获取到序列的长度的呢? len()函数就是通过执行对象的__len__方法来获取到一个序列的长度. python中常见的一些基本数据类型, 比如字符串,字典,列表,元组 都具有名为__len__方法,所以len()函数无序知道

@property在python类中的应用

1.在类中,有时需要限制输入的内容,可以用一个set来输入需要的内容,用get来取得输入的内容 2.其实说白,上述所说的方法就是用来检查输入内容,让人们不能随心所欲的设置了. 参见下面的例子: 1 class Student(object): 2 def get_score(self): 3 return self.__score 4 def set_score(self, value): 5 if not isinstance(value, int): 6 raise ValueError("

python类中几个特殊方法

class TT: def __init__(self): print "__init__" def __call__(self): print "__call__" def __str__(self): return "__str__" def __int__(self): return "__int__" def __add__(self,other): return "__add__" def __s

Python类中的self到底是干啥的

Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上.后来对Python渐渐熟悉了一点,再回头看self的概念,似乎有点弄明白了. 首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的.self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数. self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以,但是约定成俗(为了和其他编程语言统一,减少理解难度),不要搞另类,

Python类中实例属性的通用显示工具

0.说明 以下的思想方法非常有用,可以帮助你在Python开发提高开发和维护效率,所以可能的话,请仔细琢磨一下其中的代码. 之前在用Python编写一个类时,为了显示的友好性,总是需要在每个类中重载__str__或者__repr__方法,现在有了更好的方法,不需要在每个类中都这么做了,下面给出的方法非常实用. 下面使用的例子使用的Python版本都是Python3.5,但实际上在Python2.7中进行也没有任何影响. 1.正常情况下类实例的不友好显示 在Python中编写一个类时,由于没有重载