【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)
随机推荐
- 巧用nth_element求容器前n%大小的那个数
#include <algorithm> #include <vector> #include <iostream> #include <string> ...
- 【转】docker之Dockerfile实践
转自:https://www.cnblogs.com/jsonhc/p/7767669.html 上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践 先查看下本地的镜像,选一个作为ba ...
- python 根据文件创建时间排序
#coding:utf8 import os,time directory = "d:/scrapy tutorial/" t = [] d = {} for filename i ...
- poj1860(Bellman—fold)
题目连接:http://poj.org/problem?id=1860 Description Several currency exchange points are working in our ...
- 学习LSM(Linux security module)之三:Apparmor的前世今生和基本使用
感冒了,感觉一脑子浆糊,真是蛋疼. 先粗略讲一些前置知识. 一:MAC和DAC DAC(Discretionary Access Control),自主访问控制,是最常用的一类访问控制机制,意思为主体 ...
- 免费Jdk选择:jdkadoptOpenJdk
oracle公司的jdk即将要收费,不在给免费用户提供更新,点击查看. jira在7.13版本将jdk从oracle jdk变更为adoptOpenJdk.点击查看.
- Ubuntu 终端常用命令
文件目录类 1.建立目录:mkdir 目录名 2.删除空目录:rmdir 目录名 3.无条件删除子目录: rm -rf 目录名 4.改变当前目录:cd 目录名 (进入用户home目录:cd ~;进入上 ...
- java.sql.SQLException: Access denied for user ''@'localhost' (using password: No)
出错原因: 连接数据库是忘记配username 和 password 了 刚在学hiberbate4,把持久层从纯粹的jdbc改为hiberbate 出现的错误.(原来的是直接读取properties ...
- FFT&NTT&多项式相关
打了FFT 感觉以后多项式不虚了 ~滑稽~ PS 关于详见没写完.... code #include<cmath> #include<cstdio> #include<c ...
- 小白的Python之路 day5 os,sys模块详解
os模块详解 1.作用: 提供对操作系统调用的接口 2.常用方法: os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径os.chdir("dirname" ...