欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-07 21:44:20
...

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
#aaa@qq.com:bestsky
#aaa@qq.com  :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
#aaa@qq.com:bestsky
#aaa@qq.com  :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

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

3、类的方法-总结

  • 公有方法
  • 私有方法
  • 类方法
  • 静态方法
  • 内置方法
#!/usr/bin/env python
#-*-coding:utf-8-*-
#@Time   : 2018/1/15 0:22
#aaa@qq.com:bestsky
#aaa@qq.com  :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()

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