Python进阶(十一)-定义实例方法

本文详细介绍了Python中如何使用私有属性保护内部数据,以及如何通过实例方法访问这些私有属性,提供了实例方法的定义和调用示例。

分享一下我的偶像大神的人工智能教程!http://blog.youkuaiyun.com/jiangjunshow

也欢迎转载我的文章,转载请注明出处 https://blog.youkuaiyun.com/mm2zzyzzp

Python进阶(十一)-定义实例方法

  一个实例的私有属性就是以__开头的属性,无法被外部访问。那这些属性定义有什么用?
  虽然私有属性无法从外部访问,但是,从类的内部是可以访问的。除了可以定义实例的属性外,还可以定义实例的方法。
  实例的方法就是在类中定义的函数,它的第一个参数永远是 self,指向调用该方法的实例本身,其他参数和一个普通函数是完全一样的。

class Person(object):
    def __init__(self, name):
        self.__name = name

    def get_name(self):
        return self.__name
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

  get_name(self) 就是一个实例方法,它的第一个参数是self。init(self, name)其实也可看做是一个特殊的实例方法。
调用实例方法必须在实例上调用:

p1 = Person('Bob')
print p1.get_name()  # self不需要显式传入
# => Bob
 
  • 1
  • 2
  • 3

  在实例方法内部,可以访问所有实例属性,这样,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。

举例

  请给 Person 类增加一个私有属性 __score,表示分数,再增加一个实例方法 get_grade(),能根据 __score 的值分别返回 A-优秀, B-及格, C-不及格三档。
注意get_grade()是实例方法,第一个参数为self。

参考代码:

class Person(object):

    def __init__(self, name, score):
        self.__name = name
        self.__score = score

    def get_grade(self):
        if self.__score >= 80:
            return 'A'
        if self.__score >= 60:
            return 'B'
        return 'C'

p1 = Person('Bob', 90)
p2 = Person('Alice', 65)
p3 = Person('Tim', 48)

print p1.get_grade()
print p2.get_grade()
print p3.get_grade()
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

运行结果
这里写图片描述


这里写图片描述

分享一下我的偶像大神的人工智能教程!http://blog.youkuaiyun.com/jiangjunshow

也欢迎转载我的文章,转载请注明出处 https://blog.youkuaiyun.com/mm2zzyzzp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值