当前位置: 首页 > 网络知识

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

时间:2026-01-29 09:25:51

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 '亦我飞也'


上一篇:Python基础入门学习笔记 045 魔法方法:属性访问
下一篇:Python基础入门学习笔记 054 论一只爬虫的自我修养2:实战
python
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素