在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的用法扫盲的更多相关文章

  1. Python回调函数用法实例详解

    本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函 ...

  2. day01-day04总结- Python 数据类型及其用法

    Python 数据类型及其用法: 本文总结一下Python中用到的各种数据类型,以及如何使用可以使得我们的代码变得简洁. 基本结构 我们首先要看的是几乎任何语言都具有的数据类型,包括字符串.整型.浮点 ...

  3. 【Python】关于Python有意思的用法

    开一篇文章,记录关于Python有意思的用法,不断更新 1.Python树的遍历 def sum(t): tmp=0 for k in t: if not isinstance(k,list): tm ...

  4. python中xrange用法分析

    本文实例讲述了python中xrange用法.分享给大家供大家参考.具体如下: 先来看如下示例: >>> x=xrange(0,8) >>> print x xra ...

  5. 浅谈Python在信息学竞赛中的运用及Python的基本用法

    浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...

  6. python scapy的用法之ARP主机扫描和ARP欺骗

    python scapy的用法之ARP主机扫描和ARP欺骗 目录: 1.scapy介绍 2.安装scapy 3.scapy常用 4.ARP主机扫描 5.ARP欺骗 一.scapy介绍 scapy是一个 ...

  7. python函数的用法

    python函数的用法 目录: 1.定义.使用函数 1.函数定义:def 2.函数调用:例:myprint() 3.函数可以当作一个值赋值给一个变量 例:a=myprint()    a() 4.写r ...

  8. python 中@ 的用法【转】

    这只是我的个人理解: 在Python的函数中偶尔会看到函数定义的上一行有@functionName的修饰,当解释器读到@的这样的修饰符之后,会先解析@后的内容,直接就把@下一行的函数或者类作为@后边的 ...

  9. Python Enum 枚举 用法汇总

    Python Enum 枚举 用法汇总 import os import sys if sys.version_info.major + sys.version_info.minor * 0.1 &l ...

  10. python查看对象用法

    python查看类用法: dir(object_name)

随机推荐

  1. Qt笔记——入门

    Qt的介绍 跨平台c++图形用户界面应用程序框架 Qt的框架 父类(基类)子类(派生类) 头文件 QApplication应用程序类 Qt头文件没有.h 头文件和类名一样 有且只有一个应用程序类的对象 ...

  2. 成都项目中因为MYSQL与SSDB备分时间不一致,导致主键产生器错误解决一例

    -- JFinal错误提示 Duplicate entry '1791361-1823391' for key 'PRIMARY' -- 1.查看SSDB的主键生成器值ssdb 127.0.0.1:8 ...

  3. ModelMap和ModelAndView区别

    首先介绍ModelMap和ModelAndView的作用 ModelMap ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可 ...

  4. Python爬虫Scrapy测试

    # -*- coding:utf- -*- import urllib import urllib2 import re import thread import time #糗事百科爬虫类 clas ...

  5. selenium grid 环境搭建

    一.selenium grid简介 selenium grid可以同时在不同机器上测试不同浏览器,包含一个hub和多个node.node会发送配置信息到hub,hub记录并跟踪每一个node的配置信息 ...

  6. shell 查看 具体某行的值

    sed: sed '5!d' file awk: awk 'NR==5' file

  7. [CF480E]Parking Lot

    题意:给一个$n\times m$的网格,初始时有些地方不能选,给$k$个询问$(x,y)$,每次令$(x,y)$不能选,然后询问最大子正方形的边长 如果按原题来做,禁止选一个点对答案的影响是极其鬼畜 ...

  8. UILabel设置行间距

    UILabel设置行间距: NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWi ...

  9. NSNotificationCenter监听TextField文字变化

    注册 1: NSNotificationCenter.defaultCenter().addObserver(self, selector: "textDidChange", na ...

  10. Douglas Peucker算法的C#实现

    一.算法原理 Douglas-Peucker算法 在数字化过程中,需要对曲线进行采样简化,即在曲线上取有限个点,将其变为折线,并且能够在一定程度 上保持原有的形状. 经典的Douglas-Peucke ...