联通公司做网站吗,吴江区建设用地申报网站,wordpress 支付宝付款,广州免费网站建设1、 类中的方法在类里主要有三种方法#xff1a;a、普通方法#xff1a;在普通方法定义的时候#xff0c;需要一个对象的实例参数#xff0c;从而在类中定义普通方法的时候#xff0c;都必须传送一个参数self#xff0c;那么这个参数也就是objectb、类方法#xff1a;在…1、 类中的方法在类里主要有三种方法a、普通方法在普通方法定义的时候需要一个对象的实例参数从而在类中定义普通方法的时候都必须传送一个参数self那么这个参数也就是objectb、类方法在类方法中传递的参数为类也就是class在一般使用中参数为clsc、静态方法无需任何参数在静态方法中仅仅是一个函数在调用静态方法的时候不需要传递任何参数即可使用在类的三种方法中普通方法和类方法都是绑定的方法也就是在其中需要传递参数普通方法传递为slef类方法传递的为cls在使用的时候静态方法仅仅是逻辑上和class绑定在一起的而类方法可以做动态的匹配传递进去的是clas也就是类在语法上静态方法需要使用装饰符staticmethod,而类方法需要使用装饰符classmethod使用模块函数比使用静态方法更加常见。#!/usr/bin/env pythonclass TestMethod(object):def foo(self,x): #定义类中的普通函数传递参数为self也就是类的实例print excuting foo(%s,%s) % (self,x)staticmethod #定义静态方法在其中不传递参数def static_foo(x):print excuting static_foo(%s) % xclassmethod #传递类方法在其中传递的参数为clsdef class_foo(cls,x):print excuting class_foo(%s,%s) % (cls,x)kel TestMethod()kel.foo(1)kel.static_foo(1)kel.class_foo(1)TestMethod.static_foo(1)TestMethod.class_foo(1)print (kel.foo)print (kel.static_foo)print (kel.class_foo)执行结果如下[rootpython 422]# python testMethod.pyexcuting foo(__main__.testmethod object at,1) #参数为绑定的实例也就是objectexcuting static_foo(1) #静态方法没有其他参数excuting class_foo(,1) #类方法使用的参数是类excuting static_foo(1)excuting class_foo(,1) #普通方法是绑定方法使用的参数为self # 类方法也是绑定方法使用的参数为cls2、 类的特殊的属性类中具有几种特殊属性如下所示__name__表示类的名字__doc__类的文档字符串__bases__类的所有父类构成的元组__dict__类的属性__module__类所在的模块__class__类多对用的类在使用类的方法__init__方法中此方法应该返回为None#!/usr/bin/env pythonclass Kel(object):def __init__(self):print this is the init method calledreturn 1kel Kel()在如上的代码中在init方法中返回了一个值为1执行结果如下[rootpython 422]# python testinitRetun.pythis is the init method calledTraceback (most recent call last):File testinitRetun.py, line 8, in kel Kel()TypeError: __init__() should return None, not int也就是在init方法中必须返回值为None。3、 关于方法__init__#!/usr/bin/env pythonclass Kel(object): #父类方法def __init__(self):print Kel class calledclass J(Kel):#J是继承Kel类def __init__(self): #重写了init方法print J class is calledclass M(Kel):#M继承Kel类def __init__(self):#重写了init方法super(M,self).__init__()#调用了父类的方法print M class is calledprint -*10kel Kel()print -*10j J()print -*10m M()执行结果如下[rootpython 422]# python testinitRetun.py----------Kel class called----------J class is called----------Kel class calledM class is called可以看到如果子类写了自己的init方法那么不会自动的调用父类的init方法必须在子类的init方法中自己进行调用如上子类M所示每个子类最好构造自己的构造器不然积累的构造器会被调用然而如果子类重写基类的构造器基类的构造器就不会被自动调用了。a、 基类的构造器就必须显式的写出来才会被执行b、 传递self的实例对象给基类进行调用在上面的例子中使用的是内建方法super最好是使用super方法在使用super调用基类方法的时候找到基类方法并且传入self参数即可不需要明确指定父类的名字并且在修改的时候也是容易修改的。4、 类的使用一个类被定义后目标就是要把它当成一个模块来使用并把对象嵌入到代码中同其他数据类型及逻辑执行流混合使用。使用类的方式有两种一种是组合一种是派生#!/usr/bin/env pythonclass Phone(object):def __init__(self,ph):self.phone phclass Person(object):def __init__(self,nm,ph):self.name nmself.phone Phone(ph)p Person(kel,1234143)print p.name,p.phone.phone如上代码所示使用的是组合的方式在类Phone中表示手机号码而在类Person中包含了一个phone对象那么就表示person has-a phone类与类之间的关系为has-a的关系在一个类中包含其他类的实例就表示为组合。class Person(object):def __init__(self,nm,ph):self.name nmself.phone Phone(ph)class Kel(Person):def shout(self):pass如上的代码中Kel继承了person类从而表示为类与类之间的关系为派生关系也就是表示相同的类具有一些不同的功能从而可以写出自己的方法。一个子类可以继承它的基类的任何属性不关是数据属性还是方法。在继承中可以覆盖父类的方法——直接使用同名的函数即可进行覆盖也就是所谓的override方法