• 面向对象三大特性 , 类嵌套


    #!/usr/bin/env python
    # -*- coding:utf-8 -*-

    # 1.简述面向对象三大特性并用代码表示。
    """
    封装:
    class Account:
    def __init__(self, name, age):
    self.name = name
    self.age = age

    def func(self):
    pass

    继承:
    class A:
    pass

    class B(A):
    pass

    多态:
    class A:
    def func(self, arg):
    v = arg[-1]
    """

    # 2.什么是鸭子模型?
    '''
    都只有一个例如self.send参数的方法称为鸭子模型.
    '''

    # 3.列举面向对象中的类成员和对象成员。
    '''
    类成员:
    实例变量、类变量、静态方法、普通方法、类方法、属性
    对象成员:
    对象变量.
    '''

    # 4. @classmethod和@staticmethod的区别?
    '''
    classmethod多了一个参数cls,输出自己类的名称不需要传值.
    '''

    # 5.Python中双下滑 __ 有什么作用?
    '''
    成员修饰符:把该数据类型(方法/变量/参数)转换为私有.
    '''

    # 6.看代码写结果
    '''
    class Base:
    x = 1


    obj = Base()
    print(obj.x) # 1
    obj.y = 123
    print(obj.y) # 123
    obj.x = 123
    print(obj.x) # 123
    print(Base.x) # 1
    '''

    # 7.看代码写结果
    '''
    class Parent:
    x = 1


    class Child1(Parent):
    pass


    class Child2(Parent):
    pass


    print(Parent.x, Child1.x, Child2.x) # 1 1 1
    Child2.x = 2
    print(Parent.x, Child1.x, Child2.x) # 1 1 2
    Child1.x = 3
    print(Parent.x, Child1.x, Child2.x) # 1 3 2
    '''

    # 8.看代码写结果
    '''
    class Foo(object):
    n1 = '武沛齐'
    n2 = '金老板'

    def __init__(self):
    self.n1 = '女神'


    obj = Foo()
    print(obj.n1) # 女神
    print(obj.n2) # 金老板
    '''

    # 9.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
    '''
    class Foo(object):
    n1 = '武沛齐'

    def __init__(self, name):
    self.n2 = name


    obj = Foo('太白')
    print(obj.n1) # 武沛齐
    print(obj.n2) # 太白

    print(Foo.n1) # 武沛齐
    print(Foo.n2) # 报错
    '''

    # 10.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
    '''
    class Foo(object):
    a1 = 1
    __a2 = 2

    def __init__(self, num):
    self.num = num
    self.__salary = 1000

    def show_data(self):
    print(self.num + self.a1)


    obj = Foo(666)

    print(obj.num) # 666
    print(obj.a1) # 1
    print(obj.__salary) # 私有,报错
    print(obj.__a2) # 私有,报错
    print(Foo.a1) # 1
    print(Foo.__a2) # 私有,报错
    '''

    # 11.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
    '''
    class Foo(object):
    a1 = 1

    def __init__(self, num):
    self.num = num

    def show_data(self):
    print(self.num + self.a1)


    obj1 = Foo(666)
    obj2 = Foo(999)
    print(obj1.num) # 666
    print(obj1.a1) # 1

    obj1.num = 18
    obj1.a1 = 99

    print(obj1.num) # 18
    print(obj1.a1) # 99

    print(obj2.a1) # 1
    print(obj2.num) # 999
    print(Foo.a1) # 1
    print(obj1.a1) # 99
    '''

    # 12.看代码写结果,注意返回值。
    '''
    class Foo(object):

    def f1(self):
    return 999

    def f2(self):
    v = self.f1() # v = 999
    print('f2')
    return v

    def f3(self):
    print('f3')
    return self.f2()

    def run(self):
    result = self.f3()
    print(result)

    obj = Foo()
    v1 = obj.run() # f3 f2 999
    print(v1) # None
    '''

    # 13.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
    '''
    class Foo(object):

    def f1(self):
    print('f1')

    @staticmethod
    def f2():
    print('f2')

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

    Foo.f1() # 报错
    Foo.f2() # f2
    '''

    # 14.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
    '''
    class Foo(object):

    def f1(self):
    print('f1')

    @classmethod
    def f2(cls):
    print('f2')

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

    Foo.f1() # 报错
    Foo.f2() # f2
    '''

    # 15.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
    '''
    class Foo(object):

    def f1(self):
    print('f1')
    self.f2()
    self.f3()

    @classmethod
    def f2(cls):
    print('f2')

    @staticmethod
    def f3():
    print('f3')

    obj = Foo()
    obj.f1() # f1 f2 f3
    '''

    # 16.看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】
    '''
    class Base(object):
    @classmethod
    def f2(cls):
    print('f2')

    @staticmethod
    def f3():
    print('f3')

    class Foo(object):
    def f1(self):
    print('f1')
    self.f2()
    self.f3()

    obj = Foo()
    obj.f1() # f1 然后报错
    '''

    # 17.看代码写结果
    '''
    class Foo(object):
    def __init__(self, num):
    self.num = num

    v1 = [Foo for i in range(10)]
    v2 = [Foo(5) for i in range(10)]
    v3 = [Foo(i) for i in range(10)]

    print(v1) # [十个Foo函数]
    print(v2) # [十个不同的Foo函数地址]
    print(v3) # [十个不同的Foo函数地址]
    '''

    # 18.看代码写结果
    '''
    class StarkConfig(object):

    def __init__(self, num):
    self.num = num

    def changelist(self, request):
    print(self.num, request)


    config_obj_list = [StarkConfig(1), StarkConfig(2), StarkConfig(3)]
    for item in config_obj_list:
    print(item.num) # 1 2 3
    '''

    # 19.看代码写结果
    '''
    class StarkConfig(object):

    def __init__(self, num):
    self.num = num

    def changelist(self, request):
    print(self.num, request)


    config_obj_list = [StarkConfig(1), StarkConfig(2), StarkConfig(3)]
    for item in config_obj_list:
    item.changelist(666) # 1 666 2 666 3 666
    '''

    # 20.看代码写结果
    '''
    class Department(object):
    def __init__(self, title):
    self.title = title

    class Person(object):
    def __init__(self, name, age, depart):
    self.name = name
    self.age = age
    self.depart = depart


    d1 = Department('人事部')
    d2 = Department('销售部')

    p1 = Person('武沛齐', 18, d1)
    p2 = Person('alex', 18, d1)
    p3 = Person('安安', 19, d2)

    print(p1.name) # 武沛齐
    print(p2.age) # 18
    print(p3.depart) # d2地址
    print(p3.depart.title) # 销售部
    '''


    # 21.看代码写结果
    '''
    class Department(object):
    def __init__(self, title):
    self.title = title

    class Person(object):
    def __init__(self, name, age, depart):
    self.name = name
    self.age = age
    self.depart = depart

    def message(self):
    msg = "我是%s,年龄%s,属于%s" % (self.name, self.age, self.depart.title)
    print(msg)


    d1 = Department('人事部')
    d2 = Department('销售部')

    p1 = Person('武沛齐', 18, d1)
    p2 = Person('alex', 18, d1)
    p1.message() # 我是武沛齐,年龄18,属于人事部
    p2.message() # 我是alex,年龄18,属于人事部
    '''

    # 22.编写类完成以下的嵌套关系
    """
    角色:学校、课程、班级
    要求:
    1. 创建北京、上海、深圳三所学校。
    2. 创建课程
    北京有三种课程:Linux、Python、Go
    上海有两种课程:Linux、Python
    深圳有一种课程:Python
    3. 创建班级(班级包含:班级名称、开班时间、结课时间、班级人数)
    北京Python开设:21期、22期
    北京Linux开设:2期、3期
    北京Go开设:1期、2期
    上海Python开设:1期、2期
    上海Linux开设:2期
    深圳Python开设:1期、2期
    """
    class School:
    def __init__(self, add):
    self.add = add

    class Lesson:
    def __init__(self, school_obj, les):
    self.school = school_obj
    self.les = les

    class Grade:
    def __init__(self, lesson_obj, *args):
    self.lesson = lesson_obj
    self.qi = args


    s1 = School('北京')
    s2 = School('上海')
    s3 = School('深圳')

    l1 = Lesson(s1, ['Linux', 'Python', 'Go'])
    l2 = Lesson(s2, ['Linux', 'Python'])
    l3 = Lesson(s3, ['Python'])

    g1 = Grade(l1.les, '21期', '22期','1.1','2.2','80')
    g2 = Grade(l2.les, '2期', '3期','1.1','2.2','80')
    g3 = Grade(l3.les, '1期', '2期','1.1','2.2','80')

  • 相关阅读:
    数组(Array)
    js数据类型自动转化规律
    ES6-12.Symbol
    彻底搞懂prototype和__proto__
    API测试利器——Postman(1. 安装和启动)
    全国各城市的代码邮编sql(mysql版)
    SQL执行的顺序
    jQuery $.each用法
    使用maven工具对maven项目进行打包所出现的问题
    关于Notepad++中用正则表达式匹配中文的问题
  • 原文地址:https://www.cnblogs.com/zjx1/p/10766753.html
Copyright © 2020-2023  润新知