20-作业-面向对象

  1. 简述面向对象三大特性并用代码表示。

  2. 什么是鸭子模型?

  3. 列举面向对象中的类成员和对象成员。

  4. @methodclass和@staticmethod的区别?

  5. Python中双下滑 __ 有什么作用?

  6. 看代码写结果

    class Base:
        x = 1
        
    obj = Base()
    
    
    print(obj.x)
    obj.y = 123
    print(obj.y)
    obj.x = 123
    print(obj.x)
    print(Base.x)
    
  7. 看代码写结果

    class Parent:
        x = 1
        
    class Child1(Parent):
        pass
    
    class Child2(Parent):
        pass
    
    print(Parent.x,Child1.x,Child2.x)
    Child2.x = 2
    print(Parent.x,Child1.x,Child2.x) 
    Child1.x = 3
    print(Parent.x,Child1.x,Child2.x)
    
  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)
print(obj.a1)
print(obj.__salary)
print(obj.__a2)
print(Foo.a1)
print(Foo.__a2)
  1. 看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】

    class Foo(object):
        a1 = 1
        
        def __init__(self,num):
            self.num = num
        def show_data(self):
            print(self.num+self.a1)
        
    obj1 = Foo(666)
    obj1 = Foo(999)
    print(obj1.num)
    print(obj1.a1)
    
    obj1.num = 18
    obj1.a1 = 99
    
    print(obj1.num)
    print(obj1.a1)
    
    print(obj2.a1)
    print(obj2.num)
    print(obj2.num)
    print(Foo.a1)
    print(obj1.a1)
    
  2. 看代码写结果,注意返回值。

    class Foo(object):
        
        def f1(self):
            return 999
        
        def f2(self):
            v = self.f1()
            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()
    print(v1)
    
  3. 看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】

    class Foo(object):
        
        def f1(self):
            print('f1')
    
        @staticmethod
        def f2():
            print('f2')
    obj = Foo()
    obj.f1()
    obj.f2()
    
    Foo.f1()
    Foo.f2()
    
  4. 看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】

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

    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()
    
  6. 看代码写结果【如果有错误,则标注错误即可,并且假设程序报错可以继续执行】

    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()
    
  7. 看代码写结果

    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)
    print(v2)
    print(v3)
    
  8. 看代码写结果

    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)
    
  9. 看代码写结果

    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)
    
  10. 看代码写结果

    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)
    print(p3.depart)
    print(p3.depart.title)
    
  11. 看代码写结果

    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()
    p2.message()
    
  12. 编写类完成以下的嵌套关系

    """
    角色:学校、课程、班级
    要求:
    	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期
    """
    

预习

  1. 对象之间的嵌套关系
  2. 异常处理
  3. 类中的特殊成员:call
posted @ 2019-06-15 09:32  指弹小能手  阅读(79)  评论(0)    收藏  举报

关于作者:专注数据库、Python 开发、ROS、深度学习,请多多赐教!

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(iamkuboy@163.com)咨询.