类中的方法类的方法也有公有和私有之分,私有方法不能被模块外的类或方法调用,私有方法也不能被外部的类或函数调用,使用函数staticmethod()或@staticmethod修饰器把普通的函数转换为静态方法.静态方法并没有和类的实例进行名称绑定,要调用类名作为它的前缀即可,下面实例演示了类方法的使用.
在 MyClass 示例中,这将返回字符串 'hello world'. 但是,立即调用一个方法并不是必须的: x.f 是一个方法对象,它可以被保存起来以后再调用. 例如:
将继续打印 hello world,直到结束.
当一个方法被调用时到底发生了什么? 你可能已经注意到上面调用 x.f() 时并没有带参数,虽然 f() 的函数定义指定了一个参数. 这个参数发生了什么事? 当不带参数地调用一个需要参数的函数时Python肯定会引发异常.
实际上,你可能已经猜到了答案:方法的特殊之处就在于实例对象会作为函数的第一个参数被传入. 在我们的示例中,调用 x.f() 其实就相当于 myClass.f(x). 总之,调用一个具有 n 个参数的方法就相当于调用再多一个参数的对应函数,这个参数值为方法所属实例对象,位置在其他参数之前.
如果你仍然无法理解方法的运作原理,那么查看实现细节可能会澄清问题. 当一个实例的非数据属性被引用时,将搜索实例所属的类. 如果名称表示一个属于函数对象的有效类属性,会通过合并打包(指向)实例对象和函数对象到一个抽象对象中的方式来创建一个方法对象:这个抽象对象就是方法对象. 当附带参数列表调用方法对象时,将基于实例对象和参数列表构建一个新的参数列表,并使用这个新参数列表调用相应的函数对象.下面再给一个例子做参考:
类中的属性
属性也有公有和私有之分,Python中没有定义私有和公有的关键字,默认情况一下属性都是公有的,这样对类中属性的访问没有任何限制,并且都会被继承,也能从了类中进行访问,这肯定不是我们想要的,可以使用约定属性名称来达到这样数据封装的目的.如果属性的名字以两个下划线开始,就表示为私有属性,反之没有使用双下划线开始的表示公有属性.属性也可分为实例属性和静态属性,实例属性是以self作为前缀的属性.静态属性可以称为类变量,类变量可以在该类的所有实例中被共享,下在代码演示了相关应用.
运行结果如下:
好了,今天就到这里吧,改天再继续,这几天要处理的事情比较多,望理解.
下面给大家推荐最近比较火的一本书:
![]()
历史回顾:
Python中的类(一)
Python文件的读取及复制
Python文件的创建
Pyhon中的模块
Python三个常用内置函数
Python函数的其他问题
Python函数中的参数
认识Python中的函数
Python循环语句
Python条件语句(if)
Python简单语句
Python集合(set和 frozenset)
Python元组(tuple)
Python字典(dict)
Python比较列表和字符串
Python列表更多特性
Python列表(list)
Python字符串运算及函数
认识Python字符串
Python表达式及其优先级
Python运算符
Python数学计算函数及数学库函数
Python数字的四则运算
Python数据类型------数字
Python编辑器(IDE)简介
Python简介及安装
在Linux下Python语言使用Rabbitmq消息队列
Python利用pandas读取excel数据批量写入mysql
长按图片扫码关注我,获取更多精彩
动动小手点击“在看”↓
|
|