《笨方法学python》练习42
类是用来描述具有相同的属性的方法的对象的集合,它定义了该集合中每个对象共有的属性和方法。
对象是类的实例
1.创建classXX(object):
def__init__(self,YY):
2.getettr()函数使用方法:getattr(object,name[,default])
getattr(x,y)相当于x.y(x为实例)
3.类的实例化定义在方法中的变量,只作用于当前实例的类。
代码:
a=A()4.重点代码5.实例变量与类变量
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。实例变量:定义在方法中的变量,只作用于当前实例的类。形式:X.X
代码:
classA():def__init__(self):self.x=1#定义一个实例属性y=2#定义一个类属性
6.__dict__是什么?
class中的dict反映类的属性
代码:classA():def__init__(self):self.x=1#定义一个实例属性y=2#定义一个类属性a=A()一:printa.__dict__结果:{x:1}printa.y结果:2printa.x结果:1#清空实例的所有属性,y不受影响,因为他是类属性而非实例属性a.__dict__={}printa.__dict__结果:{}printa.y结果:2#这里会提示不包含x属性的错误,因为已被清空printa.x结果:错误二:printA.__dict__结果:{y:2,__module__:__main__,__doc__:None,__init__:function__init__at0x02BB0}A.__dict__={}#清空类的所有属性,x不受影响printa.x结果:1printa.y结果:错误#提示错误
7.类的继承
代码:
classFather(object):def__init__(self,name):self.name=nameprint("name:%s"%(self.name))defgetName(self):returnFather+self.nameclassSon(Father):def__init__(self,name):super(Son,self).__init__(name)#或父类名称.__init__(self,参数1,参数2,...)#Son.__init__(name)print("hi")self.name=namedefgetName(self):#子类重写方法,覆盖父类中的该方法returnSon+self.nameif__name__==__main__:son=Son(runoob)print(son.getName())
输出:
name:runoobhiSonrunoob#先找子类中是否含有getName函数,再找父类若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索即方法在子类中未找到时,从左到右查找父类中是否包含方法。
注意:
○类的方法与普通函数的区别:
类的方法中必须要有参数self,且为第一个参数
○self代表的是类的实例
(阅读全文看参考链接)
预览时标签不可点收录于话题#个上一篇下一篇