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

Python面向对象编程基础与实践
本文介绍了Python中的类与对象,包括基础属性、实例属性、类属性、实例方法、静态方法和类方法的使用。同时,深入探讨了面向对象的三大特性:封装、继承和多态,以及它们在实际编程中的应用。最后,讨论了方法与函数的区别,并通过示例展示了动态绑定属性和方法的概念。

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)

未完待续!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火柴先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值