鱼C论坛

 找回密码
 立即注册
查看: 2230|回复: 0

[技术交流] 《零基础入门学习python》第三十七讲笔记:类和对象:面向对象编程

[复制链接]
发表于 2017-8-30 17:09:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Python 的self 相当于 C++ 的this指针

self是由同一个类可以生成无数个对象,这些对象长的都很相似,当一个对象的方法被调用时,对象会将自身作为第一个参数传给self参数,接收self时python
就知道是哪一个对象在调用方法了。

  1. >>> class Ball:
  2.             def setName(self,name):
  3.             self.name = name
  4.     def kick(self):
  5.             print('我叫%s,该死的,谁踢我。。。' % self.name)


  6. >>> a = Ball()
  7. >>> a.setName('球A')
  8. >>> b = Ball()
  9. >>> b.setName('球B')
  10. >>> c = Ball()
  11. >>> c.setName('土豆')
  12. >>> a.kick()
  13. 我叫球A,该死的,谁踢我。。。
  14. >>> c.kick()
  15. 我叫土豆,该死的,谁踢我。。。
复制代码




Python的魔法方法:__init__(self)

__init__(self)的魔力是只要实例化一个对象,这个方法就会在对象被创建的时候自动调用。

  1. >>> class Ball:
  2.     def __int__(self,name):
  3.         self.name = name
  4.     def kick(self):
  5.         print('我叫%s,该死的,谁踢我。。。' % self.name)


  6. >>> b = Ball('土豆')  # b传给self,土豆传给name
  7. >>> b.kick()
  8. 我叫土豆,该死的,谁踢我。。。
复制代码



公有和私有

在Python中定义私有变量只需要在变量名或函数名前加上'__' 两个下划线,那么这个函数或变量就会为私有的了。
  1. >>> class Person:
  2.             name = '小甲鱼'


  3. >>> p = Person()
  4. >>> p.name
  5. '小甲鱼'
  6. >>> class Person:
  7.              __name = '小甲鱼'


  8. >>> p = Person()
  9. >>> p.__name  # 访问私有变量,报错
  10. Traceback (most recent call last):
  11.   File "<pyshell#81>", line 1, in <module>
  12.     p.name
  13. AttributeError: 'Person' object has no attribute '__name'


  14. >>> class Person:
  15.              __name = '小甲鱼'
  16.              def getName(self):
  17.                   return self.__name


  18. >>> p = Person()

  19. >>> p.getName()  # 通过访问类的方法来返回私有变量
  20. '小甲鱼'
  21. >>> p._Person__name  # 从这里得知,__name = _类名__变量名
  22. '小甲鱼'
  23. >>>
复制代码


评分

参与人数 1鱼币 +2 收起 理由
小甲鱼 + 2

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-26 04:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表