python复习100天

python复习第11天:面向对象编程(上)

2020-04-06  本文已影响0人  潮办公

title: python复习第11天:面向对象编程(上)
date: 2020-04-03 21:00:24
tags:
- python
- 基础
categories: python复习
top: 12


面向对象编程(上)

类的基本定义方法

class Person:
    """
    定义一个类,即人类
    """
    pass


xiao_ming = Person()  # 小明是人类的具体的一员,类的实例即对象
class Person:
    """
    定义一个类,即人类
    """
    def eat(self):
        print('我在吃饭中')


xiao_ming = Person()  # 小明是人类的具体的一员,类的实例即对象
xiao_ming.eat()  # 小明属于人类,具有吃饭的方法
class Person:
    """
    定义一个类,即人类
    """
    name = '小明'

    def eat(self):
        print('我在吃饭中'.format(self.name))  # 子函数想要调用类变量必须用self调用类属性,self为对象实例化,self.name即实例对象的属性
        print('我在吃饭中'.format(Person.name))  # 也可以使用类名称调用类属性


xiao_ming = Person()  # 小明是人类的具体的一员,类的实例即对象
xiao_ming.eat()  # 小明属于人类,具有吃饭的方法
"""
我在吃饭中
我在吃饭中
"""

构造函数

class Person:
    """
    定义一个类,即人类
    """
    def __init__(self):
        print('我正在初始化')


xiao_ming = Person()  # 实例化的时候,init函数自动调用
"""
我正在初始化
"""
class Person:
    """
    定义一个类,即人类
    """
    def __init__(self, name):
        print('我正在初始化')


p = Person('小明')  # 必须要提供name对象,这里是self=p,name='小明'
"""
我正在初始化
"""

继承与多继承

class Animal(object):
    """
    定义一个动物类,继承于object
    """
    def __init__(self, age):
        """
        初始化构造函数,需要给年龄
        :param age:
        """
        pass

    def eat(self):
        print("我正在吃饭")


class Person(Animal):
    """
    定义一个人类,继承于动物
    """

    def study(self):
        """
        定义一个学习方法
        :return:
        """
        print('我在学习')


class Student(Person):
    """
    定义一个学生类,继承于人类
    """

    def test(self):
        """
        定义一个方法,名为考试
        :return:
        """
        print('我在考试')


xiao_ming = Student(18)  # 这里必须要给age
# 如果类自身没有的函数,就会去它的父类寻找。
# 父类找不到,就去找爷爷
# 如果子类自己有的函数,父类也有的话,优先用子类的
xiao_ming.test()
xiao_ming.study()
xiao_ming.eat()
"""
我在考试
我在学习
我正在吃饭
"""
class Worker(object):
    """
    定义一个工人类
    """

    def working(self):
        print('我在工作')

    def make_money(self):
        print('我能挣钱')


class Man(object):
    """
    定义一个男性类
    """
    pass


class Father(Worker, Man):
    """
    定义一个类,名为父亲
    继承自工人和男性
    """

    def take_care_of_a_child(self):
        """
        父亲需要带孩子
        :return:
        """
        print('我在带孩子')


f = Father()
f.make_money()
f.take_care_of_a_child()
f.working()
"""
我能挣钱
我在带孩子
我在工作
"""

类的三种属性或者方法

class Person(object):
    __age = 18  # 定义类的私有属性,不可继承,不可外部访问
    _money = 0  # 定义保护属性, 可以继承,不可外部访问


class Student(Person):
    def __init__(self, name):
        self.name = name  # 定义公开属性
        print('该学生的余额为:', self._money)  # 打印学生的余额


stu = Student('小明')
print(stu.name)
print(stu._money)  # 保护属性,不会报错
print(stu.__age)  # 私有,会报错
"""
该学生的余额为: 0
小明
0
Traceback (most recent call last):
  File "/home/tlntin/PycharmProjects/study/01.py", line 15, in <module>
    print(stu.__age)  # 会报错
AttributeError: 'Student' object has no attribute '__age'
"""

方法重写

class Father(object):

    def __init__(self):
        print('这是父类的初始化')


class Son(Father):
    def __init__(self):
        """
        如果子类初始化的同时,调用父类的初始化
        """
        Father.__init__(Son)  # 这里必须要给一个参数,因为类还没有实例化,所以必须把类当做对象放进去
        print("这是子类的初始化")

s = Son()
class Father(object):

    def __init__(self):
        print('这是父类的初始化')


class Son(Father):
    def __init__(self):
        """
        如果子类初始化的同时,调用父类的初始化
        """
        print("这是子类的初始化")


s = Son()
super(Son, s).__init__()  # 调用s的超类的构造函数
"""
这是子类的初始化
这是父类的初始化
"""
上一篇 下一篇

猜你喜欢

热点阅读