python类的继承、属性总结和方法总结

1、类的继承

继承是面向对象的重要特性之一:
继承关系:继承是相对两个类而言的父子关系,子类继承了父类的所有 公有属性和方法
继承实现了代码重用。

1.1、使用继承

继承可以重用已经存在的数据和行为,减少代码的重复编写。Python在类名后使用一对括号来表示继承关系,括号中的类即为父类。

class Myclass(ParentClass)
如果父类定义了init方法,子类必须显式调用父类的init方法:
ParentClass.init(self,[args…])
如果子类需要扩展父类的行为,可以添加init方法的参数。

1.2、继承父类

class A:
def__init__(self):
print “enter A”
print “leave A”

class B:
def__init__(self):
print “enter B”
A.init(self)
print”leave B”

b = B()

1.3、super函数继承类

1.4、多重继承

Python支持多重继承,即一个类可以继承多个父类;

  • 语法:
    class class_name(Parent_c1,Parent_c2,….)
  • 注意:
    当父类中出现多个自定义的init方法时,多重继承只执行第一个类的init方法,其它不执行。
#!/usr/bin/env python
#-*-coding:utf-8-*-
#@Time   : 2018/1/14 23:09
#!@Auther:bestsky
#!@File  :demon4-类的继承.py
class People(object):
    color = 'yellow'

    # def __init__(self, c):#参数大于等于2个,子类必须显示调用;只有一个参数的话,可以直接调用。单一继承
    def __init__(self):#多重继承
        print "Init..."
        self.dwell = 'Earth'
        self.color = 'yellow'

    def think(self):
        print "I am a %s" %self.color
        print "My home is %s" %self.dwell
        print "I am a thinker"

class Martian(object):
    color = 'red'

    def __init__(self):
        self.dwell = 'Martian'

class Chinese(Martian, People): #多重调用跟,位置关系有关;可通过显式调用改变
    def __init__(self):
        # People.__init__(self, 'red')
        People.__init__(self)
        # super(Chinese, self).__init__( 'red') #通过super函数继承父类
    # pass
    # def talk(self):
    #     print("I like talking")
    # def think(self): #这里通过子类对父类的重写
    #     print("I like talking")

cn = Chinese()
# print cn.color #继承父类的color
cn.think()
# cn.talk()

2、类的属性-总结

  • 类的属性,也有公有属性
  • 类的私有属性
  • 对象的公有属性
  • 对象的私有属性
  • 内置属性
  • 函数的局部变量
  • 全局变量
#!/usr/bin/env python
#-*-coding:utf-8-*-
#@Time   : 2018/1/14 23:55
#!@Auther:bestsky
#!@File  :demon5-类的属性总结.py

class MyClass(object):
    var1 = '类属性,类的公有属性 var1'
    __var2 = '类的私有属性 __var2'

    def func1(self):
        self.var3 = '对象的公有属性 var3'  #对象属性,只能对象访问
        self.__var4 = '对象的私有属性 __var4'  #无法通过对象访问,类的外面
        var5 = '函数的局部变量 var5'  #只能在函数的内部访问
        print self.__var4
        print var5

    def func2(self):
        print self.var1
        print self.__var2
        print self.var3
        print self.__var4

mc = MyClass()
mc.func1()
print('******' * 10)
mc.func2()
print('******' * 10)
print mc.__dict__
print MyClass.__dict__
# # print mc.var1  #公有属性
# # print mc._MyClass__var2 #私有属性
# # print mc.var3

这里写图片描述

3、类的方法-总结

  • 公有方法
  • 私有方法
  • 类方法
  • 静态方法
  • 内置方法
#!/usr/bin/env python
#-*-coding:utf-8-*-
#@Time   : 2018/1/15 0:22
#!@Auther:bestsky
#!@File  :demon6-类的方法总结.py

class MyClass(object):
    name = 'Test'

    def __init__(self): #只需进行类的实例化,即可被调用。其它可不用
        self.func1()
        self.__func2()
        self.classFun()
        self.staticFun()

    def func1(self):
        print self.name,
        print "我是公有方法"
        # self.__func2() #私有方法需通过内部调用,的方式间接调用

    def __func2(self):
        print self.name,
        print "我是私有方法"

    @classmethod
    def classFun(self):
        print self.name,
        print "我是类方法"

    @staticmethod
    def staticFun():
        print MyClass.name,
        print "我是静态方法"

mc = MyClass()
# mc.func1()
# MyClass.classFun()
# MyClass.staticFun()

这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值