鱼C论坛

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

[技术交流] 35 类和对象:面向对象编程 - 景命

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

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

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

x
知识点:

一、self是什么?
        Python中的self相当于c++的this指针
        作用:同一个类可以生成很多个对象,当一个对象调用方法的时候,对象会将自身作为第一个参数,传给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.                
  7. >>> a = Ball()
  8. >>> a.setName("小明")                #可以理解为 a.setName(a,"小明")
  9. >>> b = Ball()
  10. >>> b.setName("老明")
  11. >>> a.kick()
  12. 我叫小明,该死的谁在踢我!
  13. >>> b.kick()
  14. 我叫老明,该死的谁在踢我!
复制代码





二、Python中的魔法方法。
        被双下划线包围的方法,如 __init__(self)。
        __init__(self)方法又叫做构造方法。构造方法在对象被创建的时候被调用,默认为无参的。

例:
  1. class Ball:
  2.     def __init__(self,name):     #将构造方法__init__()中加入另一个参数,来代替setName方法
  3.         self.name = name
  4.     def kick(self):
  5.         print("我叫%s,该死的谁踢我!" % self.name)
  6. a = Ball("小明")                #在对象被创建的时候必须在括号内加入参数,否则会引发异常。
  7. a.kick()
复制代码

当然在定义构造方法的时候,也可以将新加入的参数定义为默认参数,这样可以避免报错。





三、公有和私有
        Python中没有像C、java中用public和private这样的关键字来定义方法和属性是公有的还是私有的。
        Python中的属性和方法默认上都是公有的,我们可以通过点操作符(.)来访问。
        在Python中定义私有变量只需要在变量名或者函数名前面加上双下划线"__",那么这个函数或者变量就会成为私有的了。

例:
  1. >>> class Person:
  2.         __name = "小明"                #在这里将属性name定义为私有的。

  3. >>> p = Person()
  4. >>> p.name                                #此时在类外访问会报异常。
  5. Traceback (most recent call last):
  6.   File "<pyshell#3>", line 1, in <module>
  7.     p.name
  8. AttributeError: 'Person' object has no attribute 'name'
复制代码


当不用方法返回的方式也可以用(_类名__变量名)这种方式来访问私有的变量名。所有就目前来说Python的私有机制其实就是伪私有。Python的类是没有权限控制的。所以变量是可以外部调用的。
  1. >>> class Person:
  2.         __name = "小明"

  3. >>> p = Person()
  4. >>> p._Person__name                 #其实就是将(__name = "小明")写为(p._Person__name )。
  5. '小明'
复制代码

评分

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

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 22:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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