类和类的继承(6)

第6章 自定义功能单元(二)
定义类
形式:
class 类名(父类名):
    pass

父类名可选,不继承其他类可以连同括号不写,没有继承其他类的类,会自动继承系统中的内建类Object
pass空语句,预留语句位置等待以后完成

使用类
形式:
类名()

例:
class Myclass:
    "MyClass help."

myclass=Myclass()   #实例化类
print('输出类说明:')
print(myclass._doc_)
print('显示类帮助信息:')
help(myclass)

类的方法的定义与调用

定义方法:
(1)、方法的第一个参数必须是self,而且不能省略
(2)、方法整体进行一个单位的缩进,表示其属于类体中的内容

调用方法:
调用本类方法:self.方法名(参数列表),不提供self参数
调用父类方法:
形式一:父类名.方法名(self,args)
形式二:super(子类名,self).方法名(args)
形式三:super().方法名(args)
调用其他类中方法:
(1)、实例化类
(2)、实例名.方法名(参数列表)
(3)、不提供self参数

构造方法_init_():实例化时初始化相关数据

方法分类:
实例方法
类方法:使用@classmethod修饰,必须有默认参数"cls",不能使用实例属性,类名调用或实例调用
静态方法:使用@staticmethod修饰,没有默认参数,不能使用实例属性,类名调用或实例调用

类的属性:
在Python中定义属性:直接使用它。可以在构造方法中定义属性,也可以在其他方法中定义属性

两类属性:
实例属性:self.属性名     同一个类的不同属性,其值不相关联    引用:self.属性名     作用域:整个类中
类属性: 属性名           同一个类所有实例所共有的            引用:类名.类变量名

关于下划线的使用规范:
_xxx        不能用"from module import"导入 ,只有类和其子类可以反问    类似java 中protected修饰的成员
__xxx___    系统定义的名称
__xxx       类中私有变量  ,只有该类可以访问                    类似 java中 private修饰的成员

类的继承
具有父类的属性和方法:继承父类(不能继承父类的私有属性和私有方法(属性名或方法名前缀为两个下划线的))
要实现与父类不同的行为表现或能力:通过重写来修改父类的方法(参数列表一致)

多重继承
Python允许多重继承
形式:在继承父类的括号中,以","分隔开要多重继承的父类

多重继承时,继承的顺序是一个很重要的因素:如果继承的多个父类中有相同的方法名,但在类中使用时未指定父类名,从左往右,调用先继承的类中的同名方法

posted @ 2016-08-01 15:57  魔沫  阅读(250)  评论(0编辑  收藏  举报