少说话多写代码之Python学习040——类02(类的函数和方法 )

编程入门 行业动态 更新时间:2024-10-08 06:20:35

少说话多写代码之Python学习040——类02(类的<a href=https://www.elefans.com/category/jswz/34/1771370.html style=函数和方法 )"/>

少说话多写代码之Python学习040——类02(类的函数和方法 )

在类里定义函数时的self参数,其实是方法和函数的区别。在类里定义方法时,一般都在方法里加一个默认的参数,可以是,a,c,d的。但是约定俗成就统一叫self。self表示的是
这个类的当前实例,一个类有多个实例,那么它属于自己所属于的实例,不会存在实例宁缺的self会指向实例陈皮皮。
这里比价特别的是,可以把一个普通函数绑定到方法上使用,普通函数是没有self的,看下面代码,

class myClass:def myMethod(self):print('这是我的一个方法,没毛病')def myMethod2():print('这不是我的一个方法,我也懵了...')instance=myClass()
instance.myMethod()instance.myMethod=myMethod2
instance.myMethod()

输出

这是我的一个方法,没毛病
这不是我的一个方法,我也懵了...

这里的sefl参数不依赖于调用方法的方式。

class bird:song='快黄快割!'def sing(self):print(self.song)abird= bird()
abird.sing()
birdsong=abird.sing
birdsong()

输出

快黄快割!
快黄快割!

变量birdsong引用了绑定方法abird.sing上,访问birdsong还是会对self参数进行访问。

我们在学习类的时候,有一个概念,私有和公有。私有的元素(包括字段,方法)只能在类的内部访问,公有的元素才可以被其他类调用。一般一个类中如果提供给其他类访问的属性,
都会对该属性提供get和set方法,通过他们修改自己的元素。
比如,

class Person:last_name='小白'def setName(self,value):self.last_name=valuedef getName(self):return  self.last_namexiaoLi =Person()
print(xiaoLi.last_name)#错误调用
xiaoLi.last_name='小李'
print(xiaoLi.getName())#推荐调用
xiaoLi.setName('小李(正宗的)')
print(xiaoLi.getName())

输出

小白
小李
小李(正宗的)

比如下面的方法,希望_inaccessible不能让外面的类访问到。如果外面的类访问,我提供accessible给他们调用。那么怎么办?

class Secretive:def _inaccessible(self):print('秘密,不能看')def accessible(self):print('秘密的内容是:')self._inaccessible()s1= Secretive()
s1._inaccessible()
s1.accessible()

输出

秘密,不能看
秘密的内容是:
秘密,不能看

其实只要将不想被别人访问的方法置为私有即可,在Python中对方法前加两个下划线,就将方法置为私有了,如下面操作。

class Secretive2:def __inaccessible(self):print('秘密,不能看(我是私有方法啦)')def accessible(self):print('秘密的内容是:')self.__inaccessible()s2= Secretive2()
#s2.__inaccessible()
s2.accessible()

这样,如果访问__inaccessible,会报如下异常。

Traceback (most recent call last):File "D:/work/Python/Class2.py", line 70, in <module>s2.__inaccessible()
AttributeError: 'Secretive2' object has no attribute '__inaccessible'

访问accessible,可以正常输出如下,

秘密的内容是:
秘密,不能看(我是私有方法啦)

工程文件下载:

更多推荐

少说话多写代码之Python学习040——类02(类的函数和方法 )

本文发布于:2024-02-13 07:22:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757763.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   多写   说话   代码   方法

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!