首页 > 编程语言 >Python基础入门学习笔记 037 类和对象:面向对象编程

Python基础入门学习笔记 037 类和对象:面向对象编程

时间:2023-08-23 10:33:17浏览次数:39  
标签:__ .__ name Python self Person 面向对象编程 037 kick

self是什么?

  Python的self其实就相当于C++的this指针。由同一个类可以生产无数对象,当一个对象的方法被调用的时候,对象会将自身的引用作为第一个参数传给该方法,那么python就知道需要操作哪个对象的方法了。

 1 >>> class Ball:
 2     def setName(self,name):
 3         self.name = name
 4     def kick(self):
 5         print('我叫%s,该死的,谁踢我。。。' % self.name)
 6 
 7         
 8 >>> a = Ball()
 9 
10 >>> a.setName('球A')
11 >>> b = Ball()
12 
13 >>> b.setName('球B')
14 
15 >>> a.kick()
16 我叫球A,该死的,谁踢我。。。
17 >>> b.kick()
18 我叫球B,该死的,谁踢我。。。

你听说过Python的魔法方法吗?

  python的这些具有魔法的方法,总是被双下划线所包围,例如__init__(),即构造方法,也称构造函数,这个方法会在对象被创建时自动调用。其实,实例化对象时是可以传入参数的,这些参数会自动传入__init__()方法中,可以通过重写这个方法来自定义对象的初始化操作

实例:

 1 >>> class Ball():
 2 def __init__(self,name):
 3 self.name = name
 4 def kick(self):
 5 print('我叫%s,该死的,谁踢我。。。' % self.name)
 6 
 7 
 8 >>> b = Ball('小土豆')
 9 >>> b.kick()
10 我叫小土豆,该死的,谁踢我。。。

公有和私有?python内部采用了一种叫 name mangling(名字改编)的技术

默认上对象的属性和方法都是公开的,可以直接通过点操作符(.)进行访问:

1 >>> class Person:
2 name = '亦我飞也'
3 
4 
5 >>> p = Person()
6 >>> p.name
7 '亦我飞也'

为了实现定义私有变量,只需要在变量名或函数名前加上"__"两个下划线,那么这个函数或变量就会变成私有的了:

私有变量不可以直接由外部访问

 1 >>> class Person:
 2 __name = '亦我飞也'
 3 
 4 
 5 >>> p = Person()
 6 >>> p.__name
 7 Traceback (most recent call last):
 8 File "<pyshell#65>", line 1, in <module>
 9 p.__name
10 AttributeError: 'Person' object has no attribute '__name'

室友变量可以由内部(内部函数)进行访问

 1 >>> class Person:
 2 __name = '亦我飞也'
 3 def getName(self):
 4 return self.__name
 5 
 6 
 7 >>> p = Person()
 8 >>> p.__name
 9 Traceback (most recent call last):
10 File "<pyshell#72>", line 1, in <module>
11 p.__name
12 AttributeError: 'Person' object has no attribute '__name'
13 >>> p.getName()
14 '亦我飞也'

其实,name mangling(名字改编)技术,只是把双下划线开头的变量进行了改名而已。实际上在外部使用“_类名__变量名“即可访问双下划线开头的私有变量了:

1 >>> p._Person__name
2 '亦我飞也'

标签:__,.__,name,Python,self,Person,面向对象编程,037,kick
From: https://www.cnblogs.com/ybqjymy/p/17650542.html

相关文章

  • Python基础入门学习笔记 032 异常处理:你不可能总是对的
    实例1:1file_name=input('请输入需要打开的文件名:')2file=open(file_name)3print('文件的内容是:')4foreach_lineinfile:5print(each_line)6file.close() Python标准异常总结 以下是Python内置异常类的层次结构:......
  • Python基础入门学习笔记 033 异常处理:你不可能总是对的2
    try-except语句try:  检测范围exceptException[asreason]:  出现异常(Exception)后的处理代码实例1:1try:2f=open('TE.txt')3print(f.read())4f.close()5exceptOSError:6print('文件打开过程中出错了!!!')实例2:1try:2f=open(......
  • Python基础入门学习笔记 034 丰富的else语句及简洁的with语句
    丰富的else语句•要么怎样,要么不怎样if条件:  条件为真执行else:  条件为假执行    •干完了能怎样,干不完就别想怎样实例1:1defshowMaxFactor(num):2count=num//2#//为整除,判断是素数,只需依次判断当前数num除以1到(num//2)都不能整除即可3......
  • Python基础入门学习笔记 027 集合:在我的世界里,你就是唯一
    字典的表亲--集合(在python3中,如果用大括号括起一堆数字但没有体现映射关系,那么就会认为这堆玩意儿就是个集合)1>>>num1={}2>>>type(num1)3<class'dict'>4>>>num2={1,3,4}5>>>type(num2)6<class'set'>集合中的元素都是唯一的(集合会自动帮我们把......
  • Python基础入门学习笔记 028 文件:因为懂你,所以永恒
    大多数u程序都是:首先接收输入数据,然后按照要求进行处理,最后输出数据 虽然当前数据放在内存中存取的速度要比硬盘中快,但一旦断电则会丢失,所以尽量ctrl+s保持到硬盘中 什么是文件打开文件1open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,......
  • Python基础入门学习笔记 029 文件:一个任务
    •任务:将文件(record.txt)中的数据进行分割并按照以下规律保存起来:–小甲鱼的对话单独保存为boy_*.txt的文件(去掉“小甲鱼:”)–小客服的对话单独保存为girl_*.txt的文件(去掉“小客服:”)–文件中总共有三段对话,分别保存为boy_1.txt,girl_1.txt,boy_2.txt,girl_2.txt,boy_3.txt,......
  • Python基础入门学习笔记 030 文件系统:介绍一个高大上的东西
    os模块中关于文件/目录常用的函数使用方法>>>importos>>>os.getcwd()'D:\\python3.3.2\\小甲鱼python\\python程序\\第二十九课'>>>os.listdir('D:\\python3.3.2\\小甲鱼python\\python程序\\第二十九课')['boy_1.txt','boy_2......
  • Ubuntu16.04+CUDA8.0+OpenCV3.1+python+caffe+faster-rcnn环境配置
    前言Ubuntu1604注意事项CUDA80安装显卡驱动安装CUDA80编译CUDASampleOpenCV31pythonCaffe安装CaffeMNIST数据集测试faster-rcnn后记前言经过大概两个星期的配置,终于将faster-rcnn安装好了,期间重装了大概十次系统,查阅了无数多文献博客,遇到了无数多坑。本人写这篇文章就是希望读者......
  • Python基础入门学习笔记 024 递归:汉诺塔
    递归求解汉诺塔•对于游戏的玩法,我们可以简单分解为三个步骤–将前63个盘子从X移动到Y上。–将最底下的第64个盘子从X移动到Z上。–将Y上的63个盘子移动到Z上。•问题一:将X上的63个盘子借助Z移到Y上;•问题二:将Y上的63个盘子借助X移到Z上。•对于游戏的玩法,我们可以简单分......
  • Python基础入门学习笔记 025 字典:当索引不好用时
    映射 创建和访问字典>>>dict4=dict(小甲鱼='让编程改变世界',李宁='一切皆有可能')>>>dict4{'小甲鱼':'让编程改变世界','李宁':'一切皆有可能'}>>>dict4['爱迪生']='天才是99%的汗水加1%的灵感'>>&g......