Python零基础学习笔记(四十一)—— 面向对象编程思想

简介: 面向对象三大特点:              封装、继承、多态 封装:        在python中,封装就是将有相同属性和功能的事物归纳好之后放在同一个类(class)中        优点:简化代码、便于日后修改和维护 下面定义一个人类作为例子:        里面包含了对象的初始化(构造函.

面向对象三大特点

             封装、继承、多态

封装

       在python中,封装就是将有相同属性和功能的事物归纳好之后放在同一个类(class)中

       优点:简化代码、便于日后修改和维护

下面定义一个人类作为例子:

       里面包含了对象的初始化(构造函数),变量的访问限制(共有变量和私有变量)

class Person(object):

    def __init__(self, name, age, money, height):
        self.__name__ = name        #特殊变量,可以直接访问
        self.age = age              #普通变量
        self.__money = money        #私有变量,不能直接访问
        self._height = height       #可以直接访问,但是请视为私有变量,尽量不要直接访问

    def show(self):
        print("My name is %s, I am %d years old. I have %d $$."%(self.__name__, self.age, self.__money))

    def setMoney(self, money):
        if money < 0:
            pass
        else:
            self.__money = money

    def getMoney(self):
        return self.money

per = Person("Jjking", 23, 50, 60)
per.show()

per.money = 200
per.age = 24
per.show()

per.__money = 200
print(per.__money)

per.setMoney(200)
per.show()

print(per.getMoney())

#动态数据语言的体现,在执行过程中可以添加属性
per.a = 34
print(per.a)

执行结果:

74f236d980552123530920b6fa87972d3a8db705
继承:

       子类继承父类的属性,父类有的功能和属性(私有除外),子类都可以用

下面是例子:

      因为父类是Animal类,定义了eat的行为,子类是Cat类继承了Animal的eat的行为,所以在创建一个cat的对象的时候,这个对象就直接有了cat的行为,因此执行结果就是小白eat

class Animal(object):
    def __init__(self, namne):
        self.name = namne

    def eat(self):
        print(self.name + "eat")

class Cat(Animal):

    def __init__(self, name):
        Animal.__init__(self, name)

cat = Cat("小白")
cat.eat()

#执行结果
小白eat
多态:

       用一个例子来理解一下多态,就是有继承,有函数重写,父类引用指向子类对象

#人类
class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
    def whoAmI(self):
        return 'I am a Person, my name is %s' % self.name
#学生类
class Student(Person):
    def __init__(self, name, gender, score):
        super(Student, self).__init__(name, gender)
        self.score = score
    def whoAmI(self):
        return 'I am a Student, my name is %s' % self.name
#老师类
class Teacher(Person):
    def __init__(self, name, gender, course):
        super(Teacher, self).__init__(name, gender)
        self.course = course
    def whoAmI(self):
        return 'I am a Teacher, my name is %s' % self.name

def who_am_i(x):
    print(x.whoAmI())
p = Person('Tim', 'Male')
s = Student('Bob', 'Male', 88)
t = Teacher('Alice', 'Female', 'English')
who_am_i(p)
who_am_i(s)
who_am_i(t)

相关文章
|
1月前
|
Python
你真的会面向对象吗!解密Python“魔术方法”
你真的会面向对象吗!解密Python“魔术方法”
22 0
|
3天前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
|
4天前
|
存储 Python 容器
Python编程基础第二天学习笔记
Python编程的第二天学习是建立在基础概念上的深化和扩展,强调了基本语法、数据类型、控制结构和函数的重要性。通过实践这些概念,可以增强对Python编程语言的理解,并为后续的高级学习打下坚实的基础。继续实践并逐渐探索更复杂的编程任务将有助于巩固和扩展这些基础知识。
23 7
|
1月前
|
存储 索引 Python
Python学习笔记----列表、元组和字典的基础操作
这篇文章是一份Python学习笔记,涵盖了列表、元组和字典的基础操作,包括它们的创建、修改、删除、内置函数和方法等。
Python学习笔记----列表、元组和字典的基础操作
|
21天前
|
机器学习/深度学习 PHP 开发者
探索PHP中的面向对象编程构建你的首个机器学习模型:以Python和scikit-learn为例
【8月更文挑战第30天】在PHP的世界中,面向对象编程(OOP)是一块基石,它让代码更加模块化、易于管理和维护。本文将深入探讨PHP中面向对象的魔法,从类和对象的定义开始,到继承、多态性、封装等核心概念,再到实战中如何应用这些理念来构建更健壮的应用。我们将通过示例代码,一起见证PHP中OOP的魔力,并理解其背后的设计哲学。
|
22天前
|
Python
Python 中的面向对象编程 (OOP)
【8月更文挑战第29天】
23 4
|
1月前
|
存储 Java C#
详解 Python 中的面向对象编程(2)
详解 Python 中的面向对象编程(2)
36 10
|
1月前
|
Python
Python学习笔记---函数
这篇文章是一份Python函数学习的笔记,涵盖了使用函数的优势、内置函数的调用、自定义函数的定义、函数参数的不同类型(必须参数、关键字参数、默认参数、可变参数)、有返回值和无返回值的函数、形参和实参、变量作用域、返回函数、递归函数、匿名函数、偏函数以及输入和输出函数等多个函数相关的主题。
|
1月前
|
索引 Python
Python学习笔记----操作字符串
这篇文章是一份Python字符串操作的学习笔记,涵盖了字符串相加、序列相加、字符串长度和字符的查找、统计、分割、连接、替换、去除空白、大小写转换以及判断字符串是否由字母和数字组成等常用方法。
Python学习笔记----操作字符串
|
1月前
|
Python
python学习笔记---流程控制
这篇文章详细介绍了Python中的流程控制,包括选择结构(if、if-else语句、嵌套if语句)和循环语句(while循环、for循环以及for循环与range()函数的使用),以及如何在循环中使用break和continue语句。
python学习笔记---流程控制