python类的self

1.python 怎么理解 类 和 self 的用法 和含义

python的class保留了语言在进化过程中的一些遗迹。

对象这种概念,可以追溯到C语言中大量使用的结构体struct。

为了使用结构体会写很多对应的函数,

struct Dog{。.};

void run(struct *Dog dog);

void eat(struct *Dog dog, );

void attack(struct *Dog dog, int point);这样的run,eat,attact都会先把要操作的对象传递进去。

python中就是直接进化了,这个把要操作的对象给明式,同时和可以被直接使用的静态方法相区别

class Dog:

def run(self)

def eat(self)

def attact(self, point):

def buy(d): #无self的为静态方法可以Dog.buy直接引用。

2.python中self是什么意思

题主可以学习一下面向对象编程的一般知识。

概括的说,主流的支持面向对象编程的语言(Java, python等)关于“类”的定义是很接近的。类要有一个构造函数(python里就是__init__,Java里是与类同名且无返回值的一个方法),在生成对象时会自动调用。然后为了方便在类的方法中引用当前对象,就引入了一些关键字(python里是self,Java里是this)。所以self并不是程序员自己定义的,而是语言本身内建支持的。

关于self,由于python的语法确实比较奇特,看起来好像self是一个普通参数,但实际并非如此。

关于构造函数,如果题主没有感觉到其存在的必要性,不必在意,不过要记住有这样一个语法。等以后遇到有需求的时候自然就明白了。

3.python中的self是什么

class Name():

def __init__(self, name):

self.name = name

def say(self):

print 'Hello, %s' % self.name

如果不用self,那该怎么实现say(),非常难。

__inti__(self.name)叫做构造函数,凡是Name类的一个对象被创建,先运行构造函数,构造函数需要的参数就是类所需要的参数。 比如 a = Name('Ricky') 其实是 给__init__(self,name)提供参数。而self就说明是类的变量,类里别的函数也可以用的!

这是面向对象编程思路的一个瓶颈,希望你能弄懂。

4.python 类中 self 和 类本身变量的区别

def __del__(self):

'''I am dying.'''

print '%s is dying ' %self.name

print '%s says bye.' % self.name

self.__class__.population -= 1

if self.__class__.population == 0

print 'I am the last one.'

else:

print 'There are still %d people left.' % self.__class__.population

Jack = Person('Jack')

Jack.sayHi()

Jack.howMany()

Tom = Person('Tom')

Tom.sayHi()

Tom.howMany()

Jack.sayHi()

Jack.howMany()

5.我解释一下python的类方法为什么要写一个self参数

这是对前面一个php程序员问python方法为什么要手写一个self的回答,当时那个帖非常的热闹,但是下面没有一个回复讲到要点,等我有空,已经找不到原帖了。

原因有多重。首先是python中几乎所有的东西的一级对象(一级对象的定义:),method也不例外,比如你写一个:

class X:

def f(self, a, b):

那么可以这样引用f:

X.__dict__['f']

或者

X.f.__func__

现在问题来了,得到f以后怎么调用?f是一个方法,方法必须作用于对象。如果x是一个X对象,我们可以x.f(。),但是如果是以上面的方式得到的f呢?怎么f让作用于某个对象?最直观的方法就是和参数一起传递进去。

当然的限不同的设计也可以满足上面制。比如不要手写的self参数,增加this关键字,增加一个调用f个格式。这样的设计和pep20第二条不符合。

为理解python的self,不妨对比一下ruby和javascript。ruby的方式是方法不是一级对象,所以绕过了这个问题。javascript没有类,方法在调用时this会绑定到方法所属的对象,函数调用时this绑定到window,函数做构造器调用时this绑定到新对象。这么多规则,比Python复杂。

python类的self

转载请注明出处代码入门网 » python类的self

资讯

python字典函数

阅读(15)

本文主要为您介绍python字典函数,内容包括Python字典作为函数参数,编写函数实现功能:将一个字典类型数据,Python中怎么定义一个函数,传人一个字典和元组,不改变字典的键人,急求这道python字典函数的题怎么做呀。先打开Python的代码编辑器窗

资讯

python投票

阅读(15)

本文主要为您介绍python投票,内容包括如何用python实现网络上的自动投票功能,如何用python实现网络上的自动投票功能,如何用Python模拟实现微信公众号里的投票。#!/usr/bin/pythondef main(m=none):if m:maximum = melse:maximum = 0cu

资讯

python地理

阅读(14)

本文主要为您介绍python地理,内容包括怎么样用Python实现地理编码,如何用python在文件地理数据库调取栅格文件,python可以用于地理信息系统的开发吗。工具原料:地理编码工具geocoder用Python实现地理编码方法如下:看一下它都支持哪些公司的地

资讯

pythonevent

阅读(16)

本文主要为您介绍pythonevent,内容包括pythonevent键盘事件,python的event怎么响应鼠标左右键同时点击的事件,python的event怎么响应鼠标左右键同时点击的事件。step by step这种跟踪是可以实现的。几乎每个PYTHON的IDLE都可以实现。 另外

资讯

python毫秒时间戳

阅读(12)

本文主要为您介绍python毫秒时间戳,内容包括python能把正常时间转化成毫秒级别的时间戳吗,python能把正常时间转化成毫秒级别的时间戳吗,timestamp怎么转换python。可以,需要乘以1000,比如import timeprint time.time()*1000#这个就是毫秒级

资讯

python二进制读取文件

阅读(17)

本文主要为您介绍python二进制读取文件,内容包括在python中如何从二进制文件中读取信息,如何用python生成和读取二进制文件,python二进制读取文件如何知道真实的读取字节大小。你是指读入二进制文件吧?可以使用numpy.fromfile(),也可以使用ope

资讯

python文件参数

阅读(14)

本文主要为您介绍python文件参数,内容包括python如何运行程序并向程序传入参数,批处理中运行python程序并传入n个参数,怎么写,python文档中函数参数怎么理解。参数个数使用len()函数来获取import sys print sys.argv if __name__==__main__:

资讯

eclipse运行python

阅读(15)

本文主要为您介绍eclipse运行python,内容包括如何在eclipse中运行python,如何在eclipse中运行python,怎么用eclipse打开python项目。下载python下载eclipse假设有上面两个,下载一个Python的Eclipse插件pydev下载完后将其解压到Eclipse的目

资讯

python进程通信

阅读(13)

本文主要为您介绍python进程通信,内容包括python进程间通信怎么理解,python进程间通信怎么理解,python进程间通信怎么理解。在2.6才开始使用multiprocessing 是一个使用方法类似threading模块的进程模块。允许程序员做并行开发。并且可以在

资讯

pythonascii字符

阅读(16)

本文主要为您介绍pythonascii字符,内容包括python判断纯ASCII字符串怎么做,如何使用Python获得一个字符的ASCII值,python怎么判断ascii字符串问题。如果要判断某路径是否包换中文,可以用正则表达式判断是否含有双字节字符>>> import re>>> r

资讯

python在线编译

阅读(17)

本文主要为您介绍python在线编译,内容包括python在线编译器哪个,求一个好的免费的Python编译器,最好是直接丢链接,谢谢大佬,什么软件可以编译Python。实际上python 是脚本语言解释执行的,并不存在编译这个概念。用python -m py_compile file

资讯

python程序运行时

阅读(14)

本文主要为您介绍python程序运行时,内容包括分析python程序运行时间的几种方法,python的程序怎么运行,如何运行Python程序。你在windows下根本不用这么麻烦: 首先,比如你的程序名字是 test.py 如果你想调用某个具体函数,就自己写一个的文件,比

资讯

python上海

阅读(16)

本文主要为您介绍python上海,内容包括上海python培训学费多少钱老男孩培训机构多少钱,想学习python,麻烦问一下上海哪家比较好一点的培训机构有这个课程,上海python就业前景是否值得期待。优点 门槛低,上手快; 2、比 R 更具有通用性和实用性

资讯

python的reduce

阅读(13)

本文主要为您介绍python的reduce,内容包括reduce在python中是什么意思,pythonmap和reduce的用法,python之map和reduce的区别。map(function, sequence[, sequence, ]) -> listReturn a list of the re

资讯

python字典函数

阅读(15)

本文主要为您介绍python字典函数,内容包括Python字典作为函数参数,编写函数实现功能:将一个字典类型数据,Python中怎么定义一个函数,传人一个字典和元组,不改变字典的键人,急求这道python字典函数的题怎么做呀。先打开Python的代码编辑器窗

资讯

python投票

阅读(15)

本文主要为您介绍python投票,内容包括如何用python实现网络上的自动投票功能,如何用python实现网络上的自动投票功能,如何用Python模拟实现微信公众号里的投票。#!/usr/bin/pythondef main(m=none):if m:maximum = melse:maximum = 0cu

资讯

python地理

阅读(14)

本文主要为您介绍python地理,内容包括怎么样用Python实现地理编码,如何用python在文件地理数据库调取栅格文件,python可以用于地理信息系统的开发吗。工具原料:地理编码工具geocoder用Python实现地理编码方法如下:看一下它都支持哪些公司的地

资讯

pythonevent

阅读(16)

本文主要为您介绍pythonevent,内容包括pythonevent键盘事件,python的event怎么响应鼠标左右键同时点击的事件,python的event怎么响应鼠标左右键同时点击的事件。step by step这种跟踪是可以实现的。几乎每个PYTHON的IDLE都可以实现。 另外

资讯

python毫秒时间戳

阅读(12)

本文主要为您介绍python毫秒时间戳,内容包括python能把正常时间转化成毫秒级别的时间戳吗,python能把正常时间转化成毫秒级别的时间戳吗,timestamp怎么转换python。可以,需要乘以1000,比如import timeprint time.time()*1000#这个就是毫秒级

资讯

python二进制读取文件

阅读(17)

本文主要为您介绍python二进制读取文件,内容包括在python中如何从二进制文件中读取信息,如何用python生成和读取二进制文件,python二进制读取文件如何知道真实的读取字节大小。你是指读入二进制文件吧?可以使用numpy.fromfile(),也可以使用ope

资讯

python文件参数

阅读(14)

本文主要为您介绍python文件参数,内容包括python如何运行程序并向程序传入参数,批处理中运行python程序并传入n个参数,怎么写,python文档中函数参数怎么理解。参数个数使用len()函数来获取import sys print sys.argv if __name__==__main__:

资讯

vim编译python

阅读(13)

本文主要为您介绍vim编译python,内容包括vim中怎么运行python,如何使vim下开发python调试更方便,在windows下怎么用vim运行python。1错误提示如下:the pyflakes.vim plugin requires Vim to be compiled with +py

资讯

python黑客绝技

阅读(2)

本文主要为您介绍python黑客绝技,内容包括黑客们会用到哪些Python技术,我想成为一名黑客,我在学python,可是里面讲的多是游戏设计,能否,黑客们会用到哪些Python技术。学习是循序渐进的过程最常见的有两本python和黑客相关的书《python灰帽

资讯

python开发什么软件

阅读(2)

本文主要为您介绍python开发什么软件,内容包括python能用来开发什么软件,开发python用什么软件,Python可以开发哪些程序。Python开发软件可根据其用途不同分为两种,一种是Python代码编辑器,一种是Python集成开发工具,两者的配合使用可以极大的

资讯

python正则匹配url

阅读(2)

本文主要为您介绍python正则匹配url,内容包括请问如何使用python的正则表达式提取url链接,请问如何使用python的正则表达式提取url链接,怎么写url的python正则表达式。1.测试正则表达式是否匹配字符串的全部或部分regex=ur"" #正则表达式if r

资讯

pythonstrtobyte

阅读(2)

本文主要为您介绍pythonstrtobyte,内容包括python怎么将字符串转换为byte,pythonstr和byte的区别,python2.7.3中怎么将str转为bytes。public class Test { public static void main(String[] args) { //1. By

资讯

jointhreadpython

阅读(2)

本文主要为您介绍jointhreadpython,内容包括python线程join什么意思,pythonthreading一定要join吗,如何在python多线程join挂起后还能在主线程。Join的作用是众所周知的,阻塞进程直到线程执行完毕。通用的做法是我们启动一批线程,最后join这

资讯

vs2013python

阅读(2)

本文主要为您介绍vs2013python,内容包括vs2013怎么进行Python编程,vs2013怎么进行Python编程,visualstudio2013为什么支持python。方法/步骤1电脑上安装微软公司的VS2013,可以从dreamspark 上下载正版或通过其他途径获得,安装即可。2打开VS20

资讯

houdinipython

阅读(2)

本文主要为您介绍houdinipython,内容包括学习Houdini必须会python吗,学习houdini到底要不要掌握python,学习houdini到底要不要掌握python。Houdini应该不错。不过似乎某个rendering(名子不记得了),应该与python的集成更好。python是一个通用语

资讯

vimpythonide

阅读(2)

本文主要为您介绍vimpythonide,内容包括如何将vim变成一个强大的pythonide,在linux下面做python程序开发,用什么ide好,在linux下面做python程序开发,用什么ide好大家在用哪个工具。可以理解题主的需求,做机器学习的时候经常需要看具体代码,通

资讯

python大文件处理

阅读(2)

本文主要为您介绍python大文件处理,内容包括内存不足时,python如何处理大文件,python对文件进行处理,如何用python最快的获取大文件的最后几行。工作中经常会遇到处理日志文件的问题:为了得到日志的最新状态,我们需要获取日志文件的最后部分

资讯

python服务器应用

阅读(2)

本文主要为您介绍python服务器应用,内容包括python怎么在服务器端使用,python都应用服务器框架,python怎么在服务器端使用。利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令:python -m Web服务