Python 第二十四章 面向对象 封装多态+super深度剖析

封装多态

# class Student:
#
#     def __init__(self,name,sex):
#         self.name = name
#         self.sex = sex
#
# liye = Student('李业','laddy_boy')
# print(liye.sex)


# 多态:
# python 一个变量可以指向多种数据.
# a = [1, 2, 3]
# a = 'sdfasdf'
'''
java:
int a = 123


def func(int x):
    print(x)


def func(x):
    print(x)
    
'''




# class A:
#
#     def login(self):
#         print('登录')
#
#     def register(self):
#         print('注册')
#
#     def func1(self):
#         pass
#
#     def func2(self):
#         pass
#
#
# class B:
#
#     def login(self):
#         print('登录')
#
#     def register(self):
#         print('注册')
#
#     def func3(self):
#         pass

# A B互为鸭子.
# 赵嘎:  1. 好记.
# 虽然A,B两个类没有关系,但是我统一两个类中相似方法的方法名,在某种意义上统一的标准.

# index ,index, index,

# str
# list
# a = [1,2,3]
# a = list('123')
# print(a)

# print('字体变色,但无背景色')
# 固定的头尾: \033[         \033[0m

# 1;35;0m 具体调节的参数
# print('\033[1;32;0m字体变色,但无背景色 \033[0m')  # 有高亮 或者 print('\033[1;35m字体有色,但无背景色 \033[0m')
# print('\033[1;33;0m字体变色,但无背景色 \033[0m')  # 有高亮 或者 print('\033[1;35m字体有色,但无背景色 \033[0m')
# print('\033[1;45m 字体不变色,有背景色 \033[0m')  # 有高亮
# print('\033[1;35;46m 字体有色,且有背景色 \033[0m')  # 有高亮
print('\033[0;35;0m 字体有色,且有背景色 \033[0m')  # 无高亮
print('\033[1;35;0m 字体有色,且有背景色 \033[0m')  # 无高亮
print('\033[4;35;0m 字体有色,且有背景色 \033[0m')  # 无高亮
# print('\033[5;35;0m 字体有色,且有背景色 \033[0m')  # 无高亮

super深度剖析

# 严格按照mro的执行顺序去执行

# class A:
#     def f1(self):
#         print('in A f1')
#
#     def f2(self):
#         print('in A f2')
#
#
# class Foo(A):
#     def f1(self):
#         super(Foo,self).f2()  # 按照self对象从属于类的mro的顺序,执行Foo类的下一个类.
#         print('in A Foo')

#
# obj = Foo()
# obj.f1()




# class A:
#     def f1(self):
#         print('in A')
#
# class Foo(A):
#     def f1(self):
#         super(Foo,self).f1()
#         print('in Foo')
#
# class Bar(A):
#     def f1(self):
#         print('in Bar')
#
# class Info(Foo, Bar):
#     def f1(self):
#         super(Info,self).f1()  #  按照self对象从属于类的mro的顺序,执行Info类的下一个类.
#         print('in Info f1')
# print(Info.mro())
# # [Info'>, Foo'>, Bar'>, A',  'object'>]
# obj = Info()
# obj.f1()



class A:
    def f1(self):
        print('in A')

class Foo(A):
    def f1(self):
        super().f1()
        print('in Foo')

class Bar(A):
    def f1(self):
        print('in Bar')  # 1

class Info(Foo,Bar):
    def f1(self):
        super(Foo,self).f1()
        print('in Info f1')  # 2
# [Info Foo Bar A]
obj = Info()
obj.f1()


posted @ 2019-08-09 00:22  张珊33  阅读(160)  评论(0编辑  收藏  举报