美文网首页
python 面试题5

python 面试题5

作者: 足__迹 | 来源:发表于2019-08-27 19:15 被阅读0次

"""
1、面向对象的三大特征是什么?多态又是什么?
   答: 封装:将数据与操作数据的源代码进行有机的结合,形成“类”,目的是增强安全性和简化编程
        继承: 继承就是子类继承父类的特征和行为,python中一个类可以继承多个类也可以继承一个,继承的类叫做子类,被继承的
        称为父类或者基类
        多态: 多态同一个行为具有多个不同表现形态的能力。是指一个类实例(对象)的相同方法在不同情形有不同表现形式
        多态存在的三个必要条件:
           继承
           重写(子类继承父类后对父类方法进行重新定义)
           父类引用指向子类对象
"""
"""
2、私有属性怎么定义,不同的定义方式有什么区别
   定义私有: 以单下划线和双下划线开头的属性称之为私有属性
   区别 : 以单下划线开头的表示的是protected类型的变量。即保护类型只能允许其本身与子类进行访问
          双下划线的表示的是私有类型的变量。只能允许这个类本身进行访问了

"""
"""
3、自定义一个类
    1、通过上课的相关知识点对类属性进行限制,只能设置三个属性  name    age   data
    2、通过相关机制对设置的属性类型进行限制,name只能设置字符串类型数据    age设置为int类型数据  data不做要求
    3、通过相关机制实现,name 属性不能进行删除
    4、当age 设置的值少于0时,确保查询出来的值为0,
"""

class Course(object):
    """
      第三题作业题
    """
    __slots__ = ['name','age','data']

    def __setattr__(self, key, value):
        """

        :param key:  属性名称
        :param value:  属性值
        :return:  None
        """
        if key == 'name':
            if isinstance(value,str):
                object.__setattr__(self,key,value)
            else:
                print('name 字段输入的参数不是str')
        elif key == 'age':
            if isinstance(value, int):
                object.__setattr__(self, key, value)
            else:
                print('key 字段输入的参数不是int')
        else:
            object.__setattr__(self,key,value)

    def __getattribute__(self, item):
        '''

        :param item:  传入的属性
        :return:  返回查找的属性值
        '''
        if item == 'age':
           if object.__getattribute__(self,item)<= 0:
               return 0
           else:
               return  object.__getattribute__(self,item)

        else:
           return object.__getattribute__(self, item)



    def __delattr__(self, item):
        """

        :param item:  传入的属性
        :return: None
        """
        if item == 'name':
            pass
        else:
            object.__delattr__(self,item)



if __name__ == '__main__':
    c = Course()
    c.name = '小明'
    c.age = 10
    c.data = 111
    print(c.name, c.age, c.data)
    c.data = 'study hard and make progress every day'
    print(c.name,c.age,c.data)








相关文章

网友评论

      本文标题:python 面试题5

      本文链接:https://www.haomeiwen.com/subject/hrdyectx.html