python中类的函数中的self

Python类中的self到底是干啥的

Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上。后来对Python渐渐熟悉了一点,再回头看self的概念,似乎有点弄明白了。

首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的。self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以,但是约定成俗(为了和其他编程语言统一,减少理解难度),不要搞另类,大家会不明白的。

下例中将self改为myname一样没有错误:

class Person:
    def _init_(myname,name):
        myname.name=name
    def sayhello(myname):
        print ‘My name is:‘,myname.name
p=Person(‘Bill‘)
print p

self指的是类实例对象本身(注意:不是类本身)。

class Person:
    def _init_(self,name):
        self.name=name
    def sayhello(self):
        print ‘My name is:‘,self.name
p=Person(‘Bill‘)
print p

在上述例子中,self指向Person的实例p。 为什么不是指向类本身呢,如下例子:

class Person:
    def _init_(self,name):
        self.name=name
    def sayhello(self):
        print ‘My name is:‘,self.name
p1=Person(‘Bill‘)
p2 = Person(‘Apple‘)
print p1

如果self指向类本身,那么当有多个实例对象时,self指向哪一个呢?

总结

self在定义时需要定义,但是在调用时会自动传入。

self的名字并不是规定死的,但是最好还是按照约定是用self

self总是指调用时的类的实例。

来源:https://www.cnblogs.com/chownjy/p/8663024.html

原文地址:https://www.cnblogs.com/yibeimingyue/p/11225107.html

时间: 2024-08-29 09:09:59

python中类的函数中的self的相关文章

Python之在函数中使用列表作为默认参数

??本文将介绍笔者在工作中遇到的Python的一个坑,那就是使用列表作为默认参数. ??我们知道,在Python中,列表(list)是可变对象,所以列表的内容可能会在函数内改变.另一个需要注意的是,使用列表作为函数的默认参数时,列表的内容变化情况. ??首先,我们看以下的代码例子: def add(x, lst=[]): if x not in lst: lst.append(x) return lst def main(): list1 = add(1) print(list1) list2

python内置函数中的 IO文件系列 open和os

本篇介绍 IO 中的 open 和 os基础用法. 本次用一个游戏登陆 基础界面做引子,来介绍. 实现存储的话,方式是很多的. 比如 存到字典 和列表了,可是字典.列表是临时的,玩网页游戏一次还是可以,如果要是一个反复要用到的一个软件的话,显然就不合适了,比较熟悉的介质有<文件>,对正在的程序来讲,用文件数存储据存到文件当中不是很好的选择.这里有数据库的概念. 本次用文件来存储. 本次内容实现 登陆 验证 登陆验证 形式,必须输入正确的用户名和密码,才可以登陆 一共验证三次.成功即运行程序 

python内置函数中的zip,max,min函数例子

一:zip函数 print(list(zip(('a','b','c'),('1','2','3')))) print(list(zip(('a','b'),('1','2','3')))) print(list(zip(('a','b','c'),('1','2')))) p={'name':'jake','age':'20'} print(list(zip(p.keys(),p.values()))) print(list(zip(['a','b'],'sdfghh'))) 输出为:[('a

Python学习笔记#函数中使用文档,让你的函数更容易理解

>>> def intadd(a,b): 'this is a test of the doc of function' return a+b >>> intadd(2,3) 5 >>> intadd.__doc__ 'this is a test of the doc of function' >>>

Python+Selenium进阶版(二)- Python中类/函数/模块的简单介绍

关于Python中类和函数及方法的调用,我们写在这个demo.py文件,具体代码如下: # coding = utf-8 class ClassA(object): string1 = "这是一个字符串." def insteancefunc(self): print('这是一个实例方法.') print(self) @classmethod def classfunc(cls): print('这是一个类方法.') print(cls) @staticmethod def stati

python main函数中变量默认为global variable

在python的main函数中的变量默认为全局变量,而其他的def函数中的变量则默认为局部变量. 当然,局部变量会优先于全局变量,在执行formal_print(t_global)语句时便可看出. 测试代码如下: <span style="font-size:18px;">#coding=utf-8 #测试python的全局变量,局部变量的机制 def formal_print(s_global):#常规的传参用法,传递参数进行print,变量名可任意 print &quo

python函数中的默认参数问题

Python 函数中,参数的传递本质上是一种赋值操作 def foo(arg): arg = 2 print(arg) a = 1 foo(a) # 输出:2 print(a) # 输出:1 def bar(args): args.append(1) b = [] print(b)# 输出:[] print(id(b)) # 输出:4324106952 bar(b) print(b) # 输出:[1] print(id(b)) # 输出:4324106952 def foo(x, a_list=

python函数中参数是如何传递的?

python中一切皆对象,函数中参数传递的是对象的引用. 1在函数中改变变量指向的对象,即指向不同对象. 当在函数中修改传递进来的变量指向另一个对象时,实参的对象不会改变. >>> def fun(num,l,d): ... num=123; ... l=[1,2,3] ... d={'a':123} ... print("inside:","num=%f,l=%s,d=%s"%(num,l,d)) ... >>> num=1 &

python函数中的参数类型

python函数中的参数 python的函数类型详解