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

Python——面向对象(初级篇)

程序员文章站 2022-03-28 19:08:24
1.如何创建类 2.如何创建方法 3.图解面向对象的创建和执行 4.面向对象三大特性之一:封装 4.1 普通方法与构造方法对比: 5.面向对象三大特性之二:继承 6.面向对象三大特性三:多态继承 6.1 多态继承案列一: 过程:对象obj 现在F1中找a(),F1中没有,在F1的父系(F0)中找,如 ......

1.如何创建类

class 类名:
    pass

2.如何创建方法

构造方法:
    __init__
obj = 类名('a1')

普通方法:
obj = 类名('xxx')
obj.普通方法名()

3.图解面向对象的创建和执行

Python——面向对象(初级篇)

4.面向对象三大特性之一:封装

'''定义'''
class bar:
    def __init__(self,name,age):
        self.n = name
        self.a = age

'''执行'''
b1 = bar('admin',26)
b2 = bar('qq',48)

  4.1 普通方法与构造方法对比:

 Python——面向对象(初级篇)

5.面向对象三大特性之二:继承

#*****创建父系类******
class beast:    #动物的功能
    def eat(self):
        print(' %s吃'%(self.name))
    def drink(self):
        print(' %s喝'%(self.name))
    def shit(self):
        print(' %s拉'%(self.name))
    def pee(self):
        print(' %s撒' % (self.name))

#********创建猫的 类******
class cat(beast):   #猫继承动物的功能
    def __init__(self,name):
        self.name = name
        self.breed = '猫'
    def fig(self):
        print('%s\n'%(self.name),'喵喵叫')

#******* 创建狗的 类********
class dog(beast):   #狗继承动物的功能
    def __init__(self,name):
        self.name = name
        self.breed = '狗'
    def fig(self):
        print('%s\n'%(self.name),'汪汪叫')


'''执行'''

'''猫的部分功能执行'''
a = cat('猫')
a.fig()
a.eat()


'''狗的部分功能执行'''
b =  dog('狗')
b.fig()
b.drink()

 6.面向对象三大特性三:多态继承

   6.1 多态继承案列一:

 1 class f_0:
 2     def a(self):
 3         print('f_0.a')
 4 class f0(f_0):
 5     def a1(self):
 6         print('f0.a')
 7 
 8 class f1(f0):
 9     def a1(self):
10         print('f1.a')
11 
12 class f2():
13     def a(self):
14         print('f2.a')
15 
16 class s(f1,f2):
17     pass
18 
19 #*****执行*****
20 
21 obj = s()
22 obj.a()     # f_0.a

  过程:对象obj 现在f1中找a(),f1中没有,在f1的父系(f0)中找,如果f0中没有,再去f0的父系(f_0)中找,如果有,就打印,不在去f2中找,如果没有,就去f2中找。执行过程:左侧优先,一条道走到黑。具体如图展示:

Python——面向对象(初级篇)

  6.2 多态继承案列二:(两个类有交集的类)

 1 class base:
 2     def a2(self):
 3         print('base.a')
 4 class f0(base):
 5     def a1(self):
 6         print('f0.a')
 7 
 8 class f1(f0):
 9     def a1(self):
10         print('f1.a')
11 
12 class f2(base):
13     def a(self):
14         print('f2.a')
15 
16 class s(f1,f2):
17     pass
18 
19 obj = s()
20 obj.a()    # f2.a
21 obj.a2()   #base.a

  base 类是类f1和f2的交集。过程:对象obj 现在f1中找a(),f1中没有,在f1的父系(f0)中找,如果f0中没有;开始从f2中找,f2中没有就去f2的父系(base)中找。

结论:base 如果是两个类的交集,那么执行过程是先执行左边的,再执行右边的,从右边执行过程中打印。如图所示:

Python——面向对象(初级篇)

   6.3 多态继承案列三:

 1 class basereuquest():
 2     pass
 3 
 4 class requesthandler(basereuquest):
 5     def serve_forever(self):
 6         #self 是obj
 7         print('requesthandler.serve_forever')
 8         self.process_request()
 9     def process_request(self):
10         print('requesthandler.process_request')
11 
12 class minx:
13     def process_request(self):
14         print('minx.process_request')
15 
16 
17 class son(minx,requesthandler):
18     pass
19 
20 obj = son()
21 obj.serve_forever()

  过程: 创建4个类,执行obj.serve_forever()语句,根据左侧优先,先执行 类 minx ,没有就执行右侧的 类 requesthandler ,在类 requesthandler 中找server_forever()方法执行,这时候会打印 print('requesthandler.serve_forever');由于方法里面有self.process_request(),故而会执行 类 minx 中 process_request() 的方法。原因是 self 是对象 obj ,所以:self.process_request() 也就是obj.process_request(),根据左侧优先,所以会现在 类minx 中找process_request() 方法。如图所示:

 Python——面向对象(初级篇)