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

13 面向对象基础-2

作者: 卅月 | 来源:发表于2018-08-01 17:33 被阅读0次

1.内置的类属性

  • name
    类._ _ name _ _  获取类的名字
  • doc
    类._ _ doc_ _  获取类的文档说明
  • dict
    类._ _ dict_   获取类中所有的类属性和对应的值,以键值对的形式存到字典里
    对象.
    _ dict_ _  获取对象中所有的属性,以键值对的形式存到字典(常用的方法)
  • moudle
    类._ _ moudle_ _  获取当前类所在的模块的名字
  • bases
    类._ _ bases_ _  获取当前类的父类

2.私有化

(1)在python中类中的属性和方法的私有化:-->直接在属性名或者方法前加_ _
(2)属性或者方法的私有化的结果:-->在外部不能直接使用,但是可以在内部使用
如:

class Person:
    """人类"""
    __number = 40       # 私有字段

    def __init__(self, name='', age=0):
        self.name = name
        self.__age = age    # 私有属性
    def __run(self):      # 私有方法
        print('%s再跑' % self.name)

3.getter和setter

概念:

属性假的私有化:如果对于对象的某个属性不希望别人直接拿来用,但是后面又需要改动的时候,这时候就可以在属性前面加个_.这个属性获取和改动的时候就需要通过gatter和setter.
(1)getter:获取属性的值

@property
def 属性名(self):
  return self._属性名

(2)setter:给属性赋值

@属性名.setter
def 属性名(self, value):
  self._属性名 = value

如:

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

if __name__ == '__main__':
    stu1 = Student()
    stu1.name = 'sjk'
    print(stu1.name)
    print(stu1.__dict__)

#输出
sjk
{'_name': 'sjk', '_score': 0, '_age': 0}

4.继承

继承方法:

class 类名(父类):
  属性
  方法
  • (1)继承基础
    python中类是可以继承的,并且支持多继承(一般都只是单继承)
  • (2)python中所有的类默认继承python的object类.(基类)
  • (3)能继承的内容:(直接拥有父类的属性和方法,继承后父类的属性和方法还是存在的)
      a.对象的属性和方法,类的字段和类方法,静态方法都可以继承(私有的继承无意义--不能继承)
      b.slots(属性约束)的值不会继承
      c.getter和setter可以继承

如:

class Person:
    """人类"""
    def __init__(self):
        self.name = ''
        self.age = 0
        self.sex = '男'
        self.__length = 0
        self._face = 9

    def eat(self):
        print('%s 在吃饭' % self.name)

    # 类字段
    number = 61

    @classmethod
    def get_number(cls):
        print('人的数量:%d' % cls.number)

    @staticmethod
    def hurt_earth():
        print('人类破坏地球')


class Student(Person):
    """学生类"""
    pass


if __name__ == '__main__':
    stu = Student()
    stu.name = '小敏'
    stu.sex = '女'
    print(stu.__dict__)
    print(stu.eat())
    print(stu._face)

Student.hurt_earth()


#输出
{'name': '小敏', 'age': 0, 'sex': '女', '_Person__length': 0, '_face': 9}
小敏 在吃饭
None
9
人类破坏地球

相关文章

  • 13 面向对象基础-2

    1.内置的类属性 name类._ _ name _ _获取类的名字 doc类._ _ doc_ _获取类的文档说明...

  • Day13 面向对象基础2

    01.内置类属性 02.私有化 03.getter 和 setter 04.练习 05.类的继承 01.内置类属性...

  • day13 面向对象基础2

    01 内置类属性 内置类属性:python中每个类都拥有内置的类属性 __name____doc____dict_...

  • day_13面向对象基础2

    1.内置类属性 内置类属性:python中每个类都拥有内置的类属性_name:获取类的名字(字符串)_doc:获取...

  • 13面向对象2

    内置类属性 内置类属性:python中每个类都拥有内置的类属性 1.类.name:获取类的名字(字符串) 2.类....

  • iOS面试题及答案(一)

    @@@ 饭前小菜 @@@ 1. 面向过程与面向对象的本质区别 2. 面向对象的弊端 一:@@@《基础篇》@@@ 二...

  • Python基础-13面向对象

    13 面向对象 13.1 基础概念 类:  类是具有一系列共同特征和行为的事件抽象概念集合。类所描述的概念和现实生...

  • java SE目录

    java SE目录 java基础(一)java基础(二)关键字面向对象(一)面向对象(二)面向对象(三)集合(一)...

  • Java基础03面向对象

    Java 基础02Java编程基础 面向对象上 面向对象的概述 面向对象的概述:面向对象是一种符号人类思维习惯的编...

  • python面向对象学习笔记-01

    学习笔记 # 0,OOP-Python面向对象 - Python的面向对象 - 面向对象编程 - 基础 -...

网友评论

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

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