【Python】self的用法扫盲
在Python中,我们有两个重要的概念:类与实例
例如:我们在现实生活中人就是一个类,实例就是具体到某一个男人(张三、李四等)
1.类:定义人这个类
class People(object):
pass
2.实例:创建实例是通过类名+()实现
people1 = People()
3.类就像一个模板一样,我们现在在这个模板上加一些属性:age,name,使用内置方法__init__方法
class People(object):
def __init__(self,name,age):
self.name = name
self.age = age
说明:①__init__方法的第一个参数永远是self,表示创建的类实例本身,在__init__内部就可以把各种属性都绑定到self,self就指向创建的实例本身 ②有了__init__方法就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传入
#-*- coding:utf-8 -*-
class People(object):
def __init__(self,name,age):
self.name = name
self.age = age people1 = People('Jack',23) print(people1.name)
#运行结果:Jack
print(people1.age)
#运行结果:23
这里的self是指类本身,self.name就是类People的属性变量,是People所有。name是外部传来的参数,不是People自带的。self.name = name的意思是把外部传来的参数赋给People自己的属性变量self.name
4.在类中定义函数时,第一参数永远是类的本身实例变量self,传递参数时不需要传递该参数
5.类实例本身就有这些数据,那么要访问这些数据,就没必要从外部访问,直接在类中定义访问数据的函数,这样,就可以把数据“封装”起来
#-*- coding:utf-8 -*-
class People(object):
def __init__(self,name,age):
self.name = name
self.age = age
def print_age(self):
print("%s:%s" %(self.name,self.age)) people1 = People('Jack',23)
people1.print_age()
#运行结果:Jack:23
这些逻辑被封装起来了,调用起来相对容易些,但却不知道内部实现的细节。
6.如果要让内部属性不被外部访问,那么只需要加两个下划线,就变成了私有变量,只有内部可以访问,外部无法访问。
#-*- coding:utf-8 -*-
class People(object):
def __init__(self,name,age):
self.__name = name
self.__age = age
def print_age(self):
print("%s:%s" %(self.__name,self.__age)) people1 = People('Jack',23)
people1.print_age()
#运行结果:Jack:23
使用外部访问试试
#-*- coding:utf-8 -*-
class People(object):
def __init__(self,name,age):
self.__name = name
self.__age = age
def print_age(self):
print("%s:%s" %(self.__name,self.__age)) people1 = People('Jack',23)
people1.name
#报错:'People' object has no attribute 'name'
people1.__name
#报错:'People' object has no attribute '__name'
【Python】self的用法扫盲的更多相关文章
- Python回调函数用法实例详解
本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函 ...
- day01-day04总结- Python 数据类型及其用法
Python 数据类型及其用法: 本文总结一下Python中用到的各种数据类型,以及如何使用可以使得我们的代码变得简洁. 基本结构 我们首先要看的是几乎任何语言都具有的数据类型,包括字符串.整型.浮点 ...
- 【Python】关于Python有意思的用法
开一篇文章,记录关于Python有意思的用法,不断更新 1.Python树的遍历 def sum(t): tmp=0 for k in t: if not isinstance(k,list): tm ...
- python中xrange用法分析
本文实例讲述了python中xrange用法.分享给大家供大家参考.具体如下: 先来看如下示例: >>> x=xrange(0,8) >>> print x xra ...
- 浅谈Python在信息学竞赛中的运用及Python的基本用法
浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...
- python scapy的用法之ARP主机扫描和ARP欺骗
python scapy的用法之ARP主机扫描和ARP欺骗 目录: 1.scapy介绍 2.安装scapy 3.scapy常用 4.ARP主机扫描 5.ARP欺骗 一.scapy介绍 scapy是一个 ...
- python函数的用法
python函数的用法 目录: 1.定义.使用函数 1.函数定义:def 2.函数调用:例:myprint() 3.函数可以当作一个值赋值给一个变量 例:a=myprint() a() 4.写r ...
- python 中@ 的用法【转】
这只是我的个人理解: 在Python的函数中偶尔会看到函数定义的上一行有@functionName的修饰,当解释器读到@的这样的修饰符之后,会先解析@后的内容,直接就把@下一行的函数或者类作为@后边的 ...
- Python Enum 枚举 用法汇总
Python Enum 枚举 用法汇总 import os import sys if sys.version_info.major + sys.version_info.minor * 0.1 &l ...
- python查看对象用法
python查看类用法: dir(object_name)
随机推荐
- Qt笔记——入门
Qt的介绍 跨平台c++图形用户界面应用程序框架 Qt的框架 父类(基类)子类(派生类) 头文件 QApplication应用程序类 Qt头文件没有.h 头文件和类名一样 有且只有一个应用程序类的对象 ...
- 成都项目中因为MYSQL与SSDB备分时间不一致,导致主键产生器错误解决一例
-- JFinal错误提示 Duplicate entry '1791361-1823391' for key 'PRIMARY' -- 1.查看SSDB的主键生成器值ssdb 127.0.0.1:8 ...
- ModelMap和ModelAndView区别
首先介绍ModelMap和ModelAndView的作用 ModelMap ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可 ...
- Python爬虫Scrapy测试
# -*- coding:utf- -*- import urllib import urllib2 import re import thread import time #糗事百科爬虫类 clas ...
- selenium grid 环境搭建
一.selenium grid简介 selenium grid可以同时在不同机器上测试不同浏览器,包含一个hub和多个node.node会发送配置信息到hub,hub记录并跟踪每一个node的配置信息 ...
- shell 查看 具体某行的值
sed: sed '5!d' file awk: awk 'NR==5' file
- [CF480E]Parking Lot
题意:给一个$n\times m$的网格,初始时有些地方不能选,给$k$个询问$(x,y)$,每次令$(x,y)$不能选,然后询问最大子正方形的边长 如果按原题来做,禁止选一个点对答案的影响是极其鬼畜 ...
- UILabel设置行间距
UILabel设置行间距: NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWi ...
- NSNotificationCenter监听TextField文字变化
注册 1: NSNotificationCenter.defaultCenter().addObserver(self, selector: "textDidChange", na ...
- Douglas Peucker算法的C#实现
一.算法原理 Douglas-Peucker算法 在数字化过程中,需要对曲线进行采样简化,即在曲线上取有限个点,将其变为折线,并且能够在一定程度 上保持原有的形状. 经典的Douglas-Peucke ...