python篇7_类和对象

来源:互联网 发布:metatrader4骗局 知乎 编辑:程序博客网 时间:2024/06/05 19:25

类和对象

1.写法

class + 类名 + (父类名) + 冒号【eg:class child (parent):】,对象声明:c = child()【有没有参数取决于有没有重写__init__函数,并自己定义参数】

ps:python中约定类名以大写开头,函数以小写开头

2.self参数【类似于java中的This参数】

<1>作用:self最主要的作用是起到绑定的效果,对于一个类A,它可能有多个不同的对象a,b,c,self的作用可以使得类A里面的变量和方法与当前的调用者【也就是对象】绑定起来使得各个对象互相独立拥有自己的一套类A的方法和属性

<2>使用:在python的方法中,self参数往往是必须的,因为其机制默认将方法的调用者作为第一个参数传给self,实现绑定。所以我们在定义方法时,要将第一个参数定为self,操作方法里面的变量的时候,最好是用self + . 来操作,从而实现绑定

3.python中的双下划线

<1>方法或者变量前面加双下划线,表示这个方法或者变量是private的

<2>对于前后都有双下划线的方法,称之为”魔法方法”。是python的底层核心方法,定义了python一些语法的结果【比如加法对应的_add__方法,可以重写,实现自己的定制加法】

<3>对于前后都有双下划线的变量,是python的很重要的内置属性【比如obj.__dict__,就可以得到包含此对象的所有属性和对应值的字典】

4.几个关于类的BIF

issubclass(class,classinfo):classinfo是一个类元组,只要class是其中一个类的子类则返回true
isinstance(object,classinfo):classinfo是一个类元组,只要对象obj是其中一个累的对象返回true
hasattr(object,name):检查name是不是obj的属性,这里的name,也就是属性,要用引号引起来,否则报错
getattr(obj,name,defalt):跟上面一样,Defalt是get失败的时候设置的默认返回值
setattr(obj,name,value):同样注意name是string类型
delattr(obj,name):同上

5.特别注意

<1>在一个类中,如果属性名和方法名字相同,那么属性将覆盖方法,直接后果是,调用方法的时候报错,覆盖让python以为你要访问的是属性,但是又有括号,所以error。





原创粉丝点击