python进阶三(面向对象编程基础)【33 python中定义实例方法】

已有人阅读此文 - - 未知

python进阶三(面向对象编程基础)【33 python中定义实例方法】知识,python进阶三(面向对象编程基础)【33 python中定义实例方法】图片 python进阶三(面向对象编程基础)【33 python中定义实例方法】内容,python进阶三(面向对象编程基础)【33 python中定义实例方法】介绍,python进阶三(面向对象编程基础)【33 python中定义实例方法】,封装,调用,编程,及格,实例的正文:

python进阶三(面向对象编程基础)【33 python中定义实例方法】包含:python进阶三(面向对象编程基础)【33 python中定义实例方法】介绍的方法与命令流程等可以帮助到读者。

python进阶三(面向对象编程基础)【33 python中定义实例方法】例图

python进阶三(面向对象编程基础)【33 python中定义实例方法】

标签:调用优秀title获得classself必须私有属性colorpython中定义实例方法

一个实例的私有属性就是以__开头的属性,无法被外部访问,那这些属性定义有什么用?

虽然私有属性无法从外部访问,但是,从类的内部是可以访问的。除了可以定义实例的属性外,还可以定义实例的方法。

实例的方法就是在类中定义的函数,它的第一个参数永远是self,指向调用该方法的实例本身,其他参数和一个普通函数是完全一样的:

1 class Person(object):

2

3 def __init__(self, name):

4 self.__name = name

5

6 def get_name(self):

7 return self.__name

get_name(self)就是一个实例方法,它的第一个参数是self。__init__(self, name)其实也可看做是一个特殊的实例方法。

调用实例方法必须在实例上调用:

p1 = Person(‘Bob‘)

print p1.get_name() # self不需要显式传入

# => Bob

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

任务

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

1 class Person(object):

2

3 def __init__(self, name, score):

4 self.name = name

5 self.__score = score

6

7 def get_grade(self):#一个判断成绩的实例方法,只接收一个参数self

8 if self.__score >= 80:

9 return ‘A‘

10 if self.__score >= 60:

11 return ‘B‘

12

13 return ‘C‘

14

15 p1 = Person(‘Bob‘, 90)#调用类的方法

16 p2 = Person(‘Alice‘, 65)

17 p3 = Person(‘Tim‘, 48)

18

19 print p1.get_grade()#调用类中的实例私有属性的方法

20 print p2.get_grade()

21 print p3.get_grade()

python中方法也是属性

我们在class中定义的实例方法其实也是属性,它实际上是一个函数对象:

1 class Person(object):

2 def __init__(self, name, score):

3 self.name = name

4 self.score = score

5 def get_grade(self):

6 return ‘A‘

7

8 p1 = Person(‘Bob‘, 90)

9 print p1.get_编程培训grade

10 # => <bound method Person.get_grade of <__main__.Person object at 0x109e58510>>

11 print p1.get_grade()

12 # => A

也就是说,p1.get_grade返回的是一个函数对象,但这个函数是一个绑定到实例的函数,p1.get_grade()才是方法调用。

因为方法也是一个属性,所以,它也可以动态地添加到实例上,只是需要用types.MethodType()把一个函数变为一个方法:

1 import types

2 def fn_get_grade(self):

3 if self.score >= 80:

4 return ‘A‘

5 if self.score >= 60:

6 return ‘B‘

7 return ‘C‘

8

9 class Person(object):

10 def __init__(self, name, score):

11 self.name = name

12 self.score = score

13

14 p1 = Person(‘Bob‘, 90)

15 p1.get_grade = types.MethodType(fn_get_grade, p1, Person)

16 print p1.get_grade()

17 # => A

18 p2 = Person(‘Alice‘, 65)

19 print p2.get_grade()

20 # ERROR: AttributeError: ‘Person‘ object has no attribute ‘get_grade‘

21 # 因为p2实例并没有绑定get_grade

python进阶三(面向对象编程基础)【33 python中定义实例方法】标签:调用优秀title获得classself必须私有属性color原文地址:https://www.cnblogs.com/ucasljq/p/11624784.html

1python进阶三(面向对象编程基础)【33 python中定义实例方法】系部分转载自网络,如有对程序员或作者侵犯,请联系我们立即删除,另:本文仅代表作者个人观点,与本网站无关。

2python进阶三(面向对象编程基础)【33 python中定义实例方法】这篇文章的原创性以及文中对于编程运维专业度的陈述文字 和内容未经本站证实,对本文以及其中全部或者部分内容及图片的有效性、文字的真实性、完整性、及时性本站不作任何保证或承诺以及推荐,本站非盈利,有对图片文字不适的请程序员及读者仅作参考并自行核实相关内容

3这篇python进阶三(面向对象编程基础)【33 python中定义实例方法】的文章,涉及的封装,调用,编程,及格,实例命令,变量,函数,代码,类,库等皆是代称