python类与对象入门笔记(基础概念扫盲,面向对象三大特征,多态性与鸭子类型,附demo)

简介: python类与对象入门笔记(基础概念扫盲,面向对象三大特征,多态性与鸭子类型,附demo)

0 类与对象


基础介绍

  • 类属性
  • 实例属性
class Car:
    number=4 # 乘坐人数
    def __init__(self,name):
        self.name=name
car1=Car('audi rs4')
print(car1.name)
print(car1.number)
Car.number=7  # 对类属性进行修改
print(car1.number)
>>>audi rs4
>>>4
>>>7


  • 实例方法
def eat(self):
    print('学生在吃饭...')


  • 静态方法
@staticmethod
def sm():  #没有self
    print('静态方法')
# 调用
类名.method()


  • 类方法
@classmethod
def cm(cls): # 传入cls
    print('类方法')
# 调用
类名.method()


  • 实例属性
def __init___(self,name):
  self.name=name #self.name称为实例属性


对象创建

  • 实例方法实现的两种方式
#对象名.方法名()
#类名.方法名(对象名)
class Car:
    number=4 # 乘坐人数
    def __init__(self,name):
        self.name=name
    def show(self):  #要调用实例属性,记得传入self
        print('汽车型号为'+self.name)
car1=Car('audi rs4')
car1.show()
Car.show(car1)
>>>汽车型号为audi rs4
>>>汽车型号为audi rs4


  • 类属性的使用方式


动态绑定属性和动态绑定方法

# 动态绑定方法
class Car:
    number=4 # 乘坐人数
    def __init__(self,name):
        self.name=name
    def show(self):
        print('汽车型号为'+self.name)
def wash():
    print('清洗已完成')
car1=Car('audi rs4')
car1.wash=wash
car1.wash()
>>>清洗已完成


1 面向对象的思想


三大特征分别具有什么作用


1.1 封装

作用:提高程序的安全性

  • 属性和方法封装到类对象中
  • 私有属性的介绍


1.2 继承

  • 继承的demo
class Person(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def info(self):
        print('姓名:{0},年龄:{1}'.format(self.name,self.age))
class Student(Person):
    def __init__(self,name,age,sex):
        super().__init__(name,age)  
        self.sex=sex
stu=Student('wang',12,'male')
stu.info()
>>> 姓名:wang,年龄:12


super之后有()

  • 多继承demo
  • 方法重写


子类对继承自父类的某个属性或方法可以重新编写,编写时也可以通过super()调用。

class Person(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def info(self):
        print('姓名:{0},年龄:{1}'.format(self.name,self.age))
class Student(Person):
    def __init__(self,name,age,sex):
        super().__init__(name,age)
        self.sex=sex
    def info(self):
        super().info()
        print('性别:{0}'.format(self.sex))
stu=Student('wang',12,'male')
stu.info()


  • object类


1.3 多态

多态、多态性、鸭子类型

  • 多态性:一个接口多种实现

python中对多态的理解 - 宇文哲的文章 - 知乎 https://zhuanlan.zhihu.com/p/88402677

  • 鸭子类型:

这个概念的名字来源于由James Whitcomb Riley提出的鸭子测试,“鸭子测试”可以这样表述:“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

class Duck():
    def walk(self):
         print('I walk like a duck')
    def swim(self):
         print('i swim like a duck')
class Person():
    def walk(self):
       print('this one walk like a duck')  
    def swim(self):
       print('this man swim like a duck')


可以很明显的看出,Person类拥有跟Duck类一样的方法,当有一个函数调用Duck类,并利用到了两个方法walk()和swim()。我们传入Person类也一样可以运行,函数并不会检查对象的类型是不是Duck,只要他拥有walk()和swim()方法,就可以正确的被调用。


5 一些小知识点


5.1 方法与函数的区别

  1. 与类和实例无绑定关系的function都属于函数(function)
  2. 与类和实例有绑定关系的function都属于方法(method)
目录
相关文章
|
1月前
|
API 数据安全/隐私保护 开发者
Python自定义异常:从入门到实践的轻松指南
在Python开发中,自定义异常能提升错误处理的精准度与代码可维护性。本文通过银行系统、电商库存等实例,详解如何创建和使用自定义异常,涵盖异常基础、进阶技巧、最佳实践与真实场景应用,助你写出更专业、易调试的代码。
75 0
|
1月前
|
IDE 开发工具 数据安全/隐私保护
Python循环嵌套:从入门到实战的完整指南
循环嵌套是Python中处理多维数据和复杂逻辑的重要工具。本文通过实例讲解嵌套循环的基本用法、常见组合、性能优化技巧及实战应用,帮助开发者掌握其核心思想,避免常见错误,并探索替代方案与进阶方向。
84 0
|
2月前
|
编解码 数据安全/隐私保护 Python
抖音批量发布视频工具,自动上传视频作品笔记,python发布软件
这个抖音批量发布工具包含三个主要模块:主上传程序、配置文件和视频预处理工具。主程序
|
3月前
|
Python
Python字符串格式化利器:f-strings入门指南
Python字符串格式化利器:f-strings入门指南
184 80
|
26天前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
119 3
|
1月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
76 0
|
1月前
|
IDE API 开发工具
Python类型注解:让代码“开口说话”的隐形助手
Python类型注解为动态语言增添类型信息,提升代码可读性与健壮性。通过变量、函数参数及返回值的类型标注,配合工具如mypy、IDE智能提示,可提前发现类型错误,降低调试与协作成本。本文详解类型注解的实战技巧、生态支持及最佳实践,助你写出更高质量的Python代码。
105 0
|
1月前
|
监控 Linux 数据安全/隐私保护
Python实现Word转PDF全攻略:从入门到实战
在数字化办公中,Python实现Word转PDF自动化,可大幅提升处理效率,解决格式兼容问题。本文详解五种主流方案,包括跨平台的docx2pdf、Windows原生的pywin32、服务器部署首选的LibreOffice命令行、企业级的Aspose.Words,以及轻量级的python-docx+pdfkit组合。每种方案均提供核心代码与适用场景,并涵盖中文字体处理、表格优化、批量进度监控等实用技巧,助力高效办公自动化。
298 0
|
2月前
|
数据采集 分布式计算 大数据
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
不会Python,还敢说搞大数据?一文带你入门大数据编程的“硬核”真相
82 1

热门文章

最新文章

推荐镜像

更多