Python面向对象中类型的各种属性,各种方法梳理,总结!

1.类的继承

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

2.使用继承

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

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

3.多重继承

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()

4.类的属性-总结

类的属性,也有公有属性
类的私有属性
对象的公有属性
对象的私有属性
内置属性
函数的局部变量
全局变量
#-*-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

5.类的方法-总结

公有方法
私有方法
类方法
静态方法
内置方法
#-*-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()

你可能感兴趣的:(Python面向对象中类型的各种属性,各种方法梳理,总结!)