Python中类的继承及类的属性和方法总结
2018-01-11 23:30
447 查看
1.类的继承
类的继承
继承是面向对象的重要特性之一,
继承关系继承是相对两个类而言的父子关系
子类继承了父类的所有公有属性和方法,
继承,实现了代码重用
使用继承
继承可以重用已经存在的数据和行为,减少代码的重复编写,
Python在类名后使用一对括号来表示继承关系,括号中的即类为父类
class Myclass(ParentClass),
如果父类定义了__init__方法,子类必须显式调用父类的__init__方法,
ParentClass.__init__(self,[args...])
如果子类需要扩展父类的行为,可以添加__init__方法的参数.
父类中有构造函数:
参数大于两个:
Super 函数
多重继承
Python支持多重继承,第一个类可以继承多个父类
语法:
class class_name(Parent_c1,Parent_c2,...)
注意:
当父类中出现多个自定义的__init__的方法时,
多重继承,只执行第一个累的__init_方法,其他不执行。
3.类的属性总结
类属性,也是公有属性,
类的私有属性,
对象的共有属性,
对象的私有属性,
内置属性,
函数的局部变量,
全局变量,
通过类访问:
4.类的方法总结
公有方法
私有方法
类方法
静态方法
内置方法
调用静态方法:
调用内置方法:
类的继承
继承是面向对象的重要特性之一,
继承关系继承是相对两个类而言的父子关系
子类继承了父类的所有公有属性和方法,
继承,实现了代码重用
使用继承
继承可以重用已经存在的数据和行为,减少代码的重复编写,
Python在类名后使用一对括号来表示继承关系,括号中的即类为父类
class Myclass(ParentClass),
如果父类定义了__init__方法,子类必须显式调用父类的__init__方法,
ParentClass.__init__(self,[args...])
如果子类需要扩展父类的行为,可以添加__init__方法的参数.
#!/usr/bin/env python #-*- coding:utf-8 -*- class People(object): color = 'yellow' def think(self): self.color = "black" print "I am a %s " % self.color print ("I am a thinker") class Chinese(People): pass cn = Chinese() print cn.color cn.think()
父类中有构造函数:
#!/usr/bin/env python #-*- coding:utf-8 -*- class People(object): color = 'yellow' def __init__(self): print "Init..." self.dwell = 'Earth' def think(self): print "I am a %s " % self.color print ("I am a thinker") class Chinese(People): pass cn = Chinese() print cn.dwell cn.think()
参数大于两个:
#!/usr/bin/env python #-*- coding:utf-8 -*- class People(object): color = 'yellow' def __init__(self,c): print "Init..." self.dwell = 'Earth' def think(self): print "I am a %s " % self.color print ("I am a thinker") class Chinese(People): def __init__(self): People.__init__(self,'red') pass cn = Chinese()
Super 函数
class A(object): def __init__(self): print "enter A" print "leave A" class B(object): def __init__(self): print "enter B" super(B,self),__init__() print "leave B" b = B()
#!/usr/bin/env python #-*- coding:utf-8 -*- class People(object): color = 'yellow' def __init__(self,c): print "Init..." self.dwell = 'Earth' def think(self): print "I am a %s " % self.color print ("I am a thinker") class Chinese(People): def __init__(self): super(Chinese,self).__init__('red') pass cn = Chinese() cn.think()
#!/usr/bin/env python #-*- coding:utf-8 -*- class People(object): color = 'yellow' def __init__(self,c): print "Init..." self.dwell = 'Earth' def think(self): print "I am a %s " % self.color print ("I am a thinker") class Chinese(People): def __init__(self): super(Chinese,self).__init__('red') def talk(self): print "I like taking." cn = Chinese() cn.think() cn.talk()
多重继承
Python支持多重继承,第一个类可以继承多个父类
语法:
class class_name(Parent_c1,Parent_c2,...)
注意:
当父类中出现多个自定义的__init__的方法时,
多重继承,只执行第一个累的__init_方法,其他不执行。
#!/usr/bin/env python #-*- coding:utf-8 -*- class People(object): color = 'yellow' def __init__(self): print "Init..." self.dwell = 'Earth' def think(self): print "I am a %s " % self.color print ("My home is %s ") % self.dwell class Martian(object): color = 'red' def __init__(self): self.dwell = 'Martian' class Chinese(People,Martian): def __init__(self): People.__init__(self) cn = Chinese() cn.think()
#!/usr/bin/env python #-*- coding:utf-8 -*- class People(object): def __init__(self): self.dwell = 'Earth' self.color = 'yellow' def think(self): print "I am a %s " % self.color print ("My home is %s ") % self.dwell class Martian(object): color = 'red' def __init__(self): self.dwell = 'Martian' def talk(self): print "I like talking" class Chinese(Martian,People): def __init__(self): People.__init__(self) cn = Chinese() cn.think() cn.talk()
3.类的属性总结
类属性,也是公有属性,
类的私有属性,
对象的共有属性,
对象的私有属性,
内置属性,
函数的局部变量,
全局变量,
#/usr/bin/env python # -*- coding:utf-8 -*- class MyClass(object): var1 = '类属性,类的公有属性 var1' __var2 = '类的私有属性 __var2' def func1(self): self.var3 = '对象的公有属性 var3' self.__var4 = '对象的私有属性 __var4' var5 = '函数的局部变量' mc = MyClass() mc.func1() #调用后才测打印出var3 print mc.var1 print mc._MyClass__var2 print mc.var3 mc1 = MyClass() # mc1.func1() #mc1没有调用方法 print mc1.var3
通过类访问:
#/usr/bin/env python # -*- coding:utf-8 -*- # @time :2018/1/2 21:06 # @Author :FengXiaoqing # @file :__init__.py.py # var6 = '全局变量 ' class MyClass(object): var1 = '类属性,类的公有属性 var1' ##定义在方法外 __var2 = '类的私有属性 __var2' def func1(self): self.var3 = '对象的公有属性 var3' ##定义在方法内 self.__var4 = '对象的私有属性 __var4' var5 = '函数的局部变量' def func2(self): print self.var1 print self.__var2 print self.var3 print self.__var4 print self.var6 mc = MyClass() mc.func1() mc.func2() print '*'*50 print mc.__dict__ print MyClass.var1 #print MyClass.__var2 #不测通过类访问 print mc.var3 #对象的属性只能通过对象来访问 #print MyClass.__var4 print MyClass.__dict__
4.类的方法总结
公有方法
私有方法
类方法
静态方法
内置方法
class MyClass(object): name = 'Test' def func1(self): print self.name, print "我是公有方法." self.__func2() #func1间接调用了func2的私有方法 def __func2(self): print self.name, print "我是私有方法." def classFun(self): print self.name, print "我是类方法." def staticFun(self): print s.name, print "我是静态方法." mc = MyClass() mc.func1()调用类方法:用装饰器
@classmethod def classFun(self): print self.name, print "我是类方法." def staticFun(self): print s.name, print "我是静态方法." mc = MyClass() mc.func1() MyClass.classFun()
调用静态方法:
@staticmethod def staticFun(): print MyClass.name, print "我是静态方法." mc = MyClass() mc.func1() MyClass.classFun() MyClass.staticFun()
调用内置方法:
class MyClass(object): name = 'Test' def __init__(self): self.func1() self.__func2() self.classFun() self.staticFun() def func1(self): print self.name, print "我是公有方法." def __func2(self): print self.name, print "我是私有方法." @classmethod def classFun(self): print self.name, print "我是类方法." @staticmethod def staticFun(): print MyClass.name, print "我是静态方法." mc = MyClass()
相关文章推荐
- Python面向对象,类,继承,多态及鸭子类型,获取类的类型,方法和属性(类似java的反射)
- python类的继承、属性总结和方法总结
- python之字符串方法总结以及属性相关的BIF~~~
- python保留属性和方法总结(转载)
- 类的继承、类的属性总结、类的方法总结
- python—类的属性和方法总结
- 基于python3 类的属性、方法、封装、继承实例讲解
- Python第九天 面向对象 类定义 类的属性 类的方法 内部类 垃圾回收机制 类的继承 装饰器
- Python基础教程——9魔法方法、属性及迭代器【总结】
- Python3 面向对象——继承,重写,类属性与方法
- Python基础教程——9魔法方法、属性及迭代器【总结】
- python进阶学习笔记(四)——python中访问限制、创建类属性、定义实例方法、定义类方法、类的继承
- python 类和实例绑定属性和方法的总结
- Python类的继承和方法重写总结
- python-对象、私有属性_方法、继承(多重继承)、重写
- python基础教程总结8——特殊方法,属性,迭代器,生成器,八皇后问题
- OC总结----类的方法.继承.NSString类的常用方法.NSMutableString 类的方法.数组类.字典类.block语法以及数组排序高级.属性.category (分类,类目).延展,等
- Xslt中属性的访问方法总结
- 当我调用 ProductService继承BaseService的方法时,提示我BaseDao属性null
- js入门·对象属性方法大总结