【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)
随机推荐
- AC日记——[SCOI2012]喵星球上的点名 bzoj 2754
2754 思路: AC自动机暴力处理匹配: 强大的ac自动机,强大的fail树,强大的map,强大的vector,强大的指针: 代码: #include <map> #include &l ...
- VisualStudio 2013开发Office插件
在VS中选择创建新项目,选择App for Office 选择mail出现的位置 Task pane The app appears in the task pane of a Microsift O ...
- django URL参数在view中传递和Template的反向解析方式
一. URL参数在view中传递 1.带参数名:通过named group方式传递指定参数,语法为: (?P<name>pattern), name 为传递参数的名称,pattern代表所 ...
- (2)C# 创建ef oracle
1.NUGet下载 2.下载 Oracle Developer Tools for Visual Studio https://www.oracle.com/technetwork/develope ...
- 【ZOJ】3785 What day is that day? ——KMP 暴力打表找规律
转自:http://www.cnblogs.com/kevince/p/3887827.html 首先声明一下,这里的规律指的是循环,即找到最小循环周期. 这么一说大家心里肯定有数了吧,“不就是nex ...
- HDU 2547 无剑无我(数学)
#include<cstdio> #include<iostream> #include<cmath> int main() { double a,b,c,d,m; ...
- tomcat安装规范
创建用户 useradd -u 501 tomcat passwd tomcat tomcat安装 tar zxf apache-tomcat-8.5.5.tar.gz -C /usr/local/ ...
- 基于 Python + OpenCV 进行人脸识别,视频追踪代码全注释
先来普及一下概念, 计算机对人脸是如何识别的呢? 或者说图像是如何识别的.主要是获取单张图片的特征值记录了特征值以后,如果下一张图片来了以后两张图片特征值进行对比,如果相似度很高那么计算机就认定这两个 ...
- [BZOJ3551][ONTAK2010]Peaks(加强版)(Kruskal重构树,主席树)
3551: [ONTAK2010]Peaks加强版 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 2438 Solved: 763[Submit][ ...
- POJ 3168 Barn Expansion (几何基础)
[题目链接] http://poj.org/problem?id=3168 [题目大意] 给出一些矩形,没有相交和包含的情况,只有相切的情况 问有多少个矩形没有相切或者边角重叠 [题解] 我们将所有的 ...