个人简介
- 大家好,我是韩慧腾。一名正在努力学python的小白,本文章为初学的笔记,希望各位多多指教。💙
- 欢迎点赞+收藏+留言💜
- 过去的价值不代表未来的地位🧡
一、编程的两大思想

类是多个类似事物组成的群体的统称。能够帮助我们快速理解和判断事物的性质

- # @Author:韩慧腾
- # @Time :2022/7/11 10:45
- # @File :class_Demo1.py
- # 努力已经来不及了,你得拼命
- class Student:#Student为类的名称,通常类名首字母是大写的
- name='张三'#直接写在类里的变量,称为类属性
- def init(self,name,age):
- self.name=name
- self.age=age
- #实例方法
- def city(self):
- print('我最喜欢的城市是'+self)
- #静态方法
- @staticmethod
- def run():
- print('我喜欢跑步')
- #类方法
- @classmethod
- def c(cls):
- print('我是一个类方法')
- #在类之外定义的称为函数,在类之内定义的称为方法
- def food(s):
- print('我最喜欢的事物是'+s)
三、对象的创建(类的实例化)

创建对象后就可以调用类中的内容
调用对象中方法的两种方式:
四、面向对象的三大特征
对于想要封装的属性,可以在其变量名之前加__
- # @Author:韩慧腾
- # @Time :2022/8/14 11:37
- # @File :Demo_00.py
- # 努力已经来不及了,你得拼命
- class Student:
- def __init__(self,name,age):
- self.name=name
- self.__age=age
- stu=Student('张三',20)
- print(stu.name)
- '''print(stu.age)#此处就会报错,不能以这样的方式访问age'''
- print(stu._Student__age)#以该种方式可以访问age,会正常输出20

如果一个类没有继承任何类,则默认继承object;python支持多继承,定义子类时,必须在其构造函数中调用父类的构造函数。
方法重写:如果子类对继承自父类的某个属性或方法不满意,可以在子类中对其(方法体)进行重新编写,子类重写后的方法中可以通过super().方法名()调用父类中被重写的方法。
- # @Author:韩慧腾
- # @Time :2022/8/14 11:37
- # @File :Demo_00.py
- # 努力已经来不及了,你得拼命
- class Person:
- def __init__(self,name,age):
- self.name=name
- self.age=age
- def show(self):
- print(self.name+'今年'+self.age+'岁了')
- class Me(Person):
- pass
- m=Me('张三','18')
- m.show()
概述:简单地说,多态就是“具有多种形态”,它指的是:即便不知道一个变量所引用的对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用对象的类型,动态决定调用哪个对象中的方法。
- # @Author:韩慧腾
- # @Time :2022/8/14 16:53
- # @File :Demo_01.py
- # 努力已经来不及了,你得拼命
- class Animal:
- def eat(self):
- print('动物都爱吃')
- class Dog(Animal):
- def eat(self):
- print('狗爱啃骨头')
- class Cat(Animal):
- def eat(self):
- print('猫吃鱼')
- class Person:
- def eat(self):
- print('人类应该吃的更健康')
- #定义一个函数
- def f(Animal):
- Animal.eat()
- #调用函数
- f(Dog())#狗爱啃骨头
- f(Person())#人类应该吃的更健康
- '''此处和其他语言不太一样,该函数的参数部分不一定是Animal类或者其子类,是任意有eat方法的类或者所继承的方法有eat类都可以'''
五、object类
概述:object类是所有类的父类,因此所有类都有object类的属性和方法;内置函数dir()可以查看指定对象所有的属性;object有一个_str_()方法,用于返回一个对于“对象的描述”,对应于内置函数str()常用于print()方法,帮助我们查看对象的信息,所以我们经常会对_str_()进行重写。
没有重写str()方法之前输出对象名会输出内存地址,重写str方法可以自定义输出对象名时的内容。
六、特殊属性和特殊方法

- # @Author:韩慧腾
- # @Time :2022/8/14 19:31
- # @File :Demo_02.py
- # 努力已经来不及了,你得拼命
- #特殊属性
- class Study:
- def __init__(self,name,score):
- self.name=name
- self.score=score
- def show(self):
- print(self.name+"考了"+self.score)
- s=Study('张三','100')
- s.show()
- print(s.__dict__)#实例对象的属性字典
- print(Study.__dict__)#类对象的属性字典
- print(s.__class__)#输出对象所属的类
- print(Study.__base__)#输出该类的父类,对于继承了多个类的类使用bases,可以以元组的形式返回所有继承的类
- print(Study.__mro__)#查看类的继承层次结构
- print(Study.__subclasses__())#查看该类的子类
-
-
七、类的浅拷贝和深拷贝
概述:python拷贝一般都是浅拷贝,拷贝时,对象包含的子对象内容不拷贝,因此,原对象与拷贝对象会引用同一个子对象。(意思为拷贝的对象和原对象的子类是相同的)
概述:使用copy模块的deepcopy函数,递归拷贝对象中包含的子对象,原对象和拷贝对象所有的子对象也不相同