美文网首页
13-面向对象2

13-面向对象2

作者: 微醉那一抹殷红 | 来源:发表于2018-08-01 17:39 被阅读0次

一、内置类属性

内置属性 功能
__ name __ 获取类的名字
__ doc__ 获取类的说明文档
__ dict __ 获取类属性和其对应的值(键值对形式)
__ module__ 获取当前类所在的模块名
__ bases__ 获取当前类的父类



二、私有化

  • 私有化方法:

直接在属性名或者方法名前加两个下划线(__属性名)

  • 私有功能

在外部不能使用,可以在类的内部使用

  • 属性假私有化

声明属性的时候,在属性名前加一个 ‘ _ ’ ,来告诉他人这个属性是不可以直接使用的。要通过 gettersetter 来获取和修改属性的值

  • getter & setter

1. getter

通过 getter 获取值:
@property
def 属性名(去掉下划线)(self):
   return 返回值

如果在获取对象的某个属性之前,需要有其他的操作,就给属性添加getter

2. setter

通过 setter 赋值
@属性名(去掉下滑线).setter
def 属性名去掉下划线(self, 变量名):
   给带下划线的属性赋值
  • 使用 setter 前提必须要有 getter
  • 如果在给对象的某个属性赋值前,需要有其他的操作,就需要添加setter
3.综合实例
class Student:
    """学生类"""
    def __init__(self):
        # 声明属性的时候前面加一个'_'是为了告诉别人这个属性不能直接使用
        self._name = ''
        self._score = 0
        self._age = 0

    #  给属性_name添加getter
    @property
    def name(self):
        return self._name

    #  给属性_name添加setter
    @name.setter
    def name(self, value):
        self._name = value

    @property
    def age(self):
        return str(self._age)+'岁'

    @age.setter
    def age(self, age):
        if age >= 150 or age < 0:
            print('赋值有误,age要求是0-150的值')
            # raise 抛出异常: raise 错误类型
            # raise ValueError
            self._age = None
            return
        self._age = age


if __name__ == '__main__':
    stu1 = Student()
    # 不添加getter和setter
    # stu1._name = '张三'
    # print(stu1._name)

    # 添加getter和setter
    stu1.name = '李四'
    print(stu1.name)

    stu1.age = 20
    print(stu1.age)



三、类的继承

1.说明:

一个类继承另一个类的时,它将自动获得另一个类的的所有属性和方法,原有的类称为父类,而新类称为子类

  • 父类:被继承者
  • 子类:继承者
2. 怎么继承
class 类名(父类):
    '''类的说明文档'''
   属性
   方法  
  • python中所有的类默认继承python的基类 —— object

3. 哪些内容可以继承

  • 对象的属性和方法,类的字段和类方法,静态方法
  • slots 的值不会被继承
  • getter 和 setter 会被继承





易竹小居士.jpg

相关文章

  • 13-面向对象2

    一、内置类属性 二、私有化 私有化方法: 直接在属性名或者方法名前加两个下划线(__属性名) 私有功能 在外部不能...

  • 13-面向对象

    内容: final static 匿名对象 内部类 包的声明与访问 四种访问修饰符 代码块 1. final关键字...

  • JS面向对象

    JS面向对象入门 1、面向对象语言概念面向对象语言主要包括 类、对象、封装、多肽。2、面向对象的编程思想面向过程思...

  • 面向对象基础

    一、面向对象概述 1、面向对象编程包括: OOA:面向对象分析OOD:面向对象的设计OOP:面向对象的编程实现 2...

  • web-js-内置对象 面向对象

    内置对象 1、document 2、location 3、Math 面向对象 面向过程与面向对象编程 创建对象的方...

  • 第十二天学习Java(面向对象)

    2、2面向对象和面向过程 面向对象(OOP) 不是一种语言,而是一种思想 面向对象程序设计:(Object Ori...

  • 面向对象

    1.面向对象理解 2.面向对象关系图

  • 【技术贴】java面向对象的基本概念

    java面向对象概述 一,面向过程与面向对象 1,程序的发展经历了两个主要阶段:面向过程、面向对象。 2,对于面向...

  • ES6面向对象

    1、ES6面向对象: class(类) 构造函数 对象 实例对象 ES5面向对象是模拟面向对象。 2、继...

  • 8.面向对象基础

    1.什么是面向对象 2.应该如何学习面向对象 3.面向对象的思维方式 什么是面向对象 1.面向对象是一种编程方法;...

网友评论

      本文标题:13-面向对象2

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