python之类的封装,继承,多态(1)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

四,完整代码如下


=======================================================================================================================================================================================================

一,封装

====

1,类和对象


Java和python都是面向对象的语言

①创建类,语法

**class  类名:

代码**

#Java class Person{ }

#python 首字母需要大写

class Student:

pass

②实例化对象

对象名 = 类名( )

# 实例化

#java new Student()

python

s=Student()

#打印s 肯定是内存地址

print(s)

控制台输出<__main__.Student object at 0x000001C64DC733D0>

③调用类属性和方法语法

**对象名.属性;

对象名.方法()**

class Student:

def say(self):
    # self这个参数是当前这个对象,不需要自己传参
    # 可以通过self去取得自身携带的一些东西,如属性
    print("hello",self)

实例化

s=Student()

print(s)

s.say()

控制台输出,self和对象 内存地址一致

<__main__.Student object at 0x0000029B91939370>

hello <__main__.Student object at 0x0000029B91939370>

一个函数定义在类里面叫方法

2,self

======

self指的是调用该函数的对象

函数中默认参数self,该默认的参数self指的是调用该函数的对象

案例1:self和对象的内存地址是否一致?

class Student:

def say(self):
    # self这个参数是当前这个对象,不需要自己传参
    # 可以通过self去取得自身携带的一些东西,如属性
    print("hello",self)

实例化

s=Student()

print(s)

s.say()

控制台输出,self和对象 内存地址一致

<__main__.Student object at 0x0000029B91939370>

hello <__main__.Student object at 0x0000029B91939370>

案例2:如果是多个对象,调用同一个函数,self地址是否一致?

3,属性


①类属性

a,可以通过类名或者对象访问,写在类里面

语法: 变量名 = 变量值

class Student:

name='小宝'
sex:str
age=20
def say(self):
    # self这个参数是当前这个对象,不需要自己传参
    # 可以通过self去取得自身携带的一些东西,如属性
    print("hello",self)

b,修改类属性

类属性的修改,只能通过类修改,不能通过对象修改

语法:类名.变量名=变量值

# name 实例属性

s.name=“张三”#添加了一个实例属性name 值是张三

Student.name=“haha”#修改了类属性

s有几个name属性? 【name类属性】【name实例属性】

del s.name #删除了name实例属性

s.birth=‘2021-1-1’#不会报错,python是弱类型,对变量没有类型限制,对对象没有属性限制

注意:如果通过对象对属性进行重新赋值,实际上是给该对象又重新定义了一个属性名一样的变量

②添加对象属性

a,类外面添加对象属性

语法:  对象名.属性名 = 值        (注意:该种方式添加的属性,只能属于该对象的)

s.name=“小张”

b,类里面添加对象属性

语法: 变量名 = 变量值        (注意:该种方式添加的属性,属于所有类对象的)

name=‘小宝’

c,__init__()方法中添加对象属性

语法:self.属性名 = 值        (用在__init__()初始化方法中)

def __init__(self,name:str=“”,age:int=0):#这里的str与int只是需要的类型,给其他类型也不会报错

self.\_\_name=name
self.\_\_age=age

③获取对象属性

a,类外面获取对象属性,语法:对象名.属性名

print(s.name)

b,类里面获取对象属性,语法:self.属性名        (用在函数中)

def __str__(self):

return f"名字{self.__name},年龄{self.__age}"

④私有属性和私有方法

a,设置私有属性和方法

在属性名和方法名前面加两个下划线__

定义为私有属性和私有方法,不能被子类继承

# 1.私有化属性

__name:str

__age:int

b,获取和修改私有属性的值

获取,定义getXXX()

修改,定义setXX()

#2,提供get/set

def get_name(self):

return self.\_\_name

def set_name(self,name:str):

return self.\_\_name

4,方法


①类方法

用装饰器@classmethod标识

@classmethod

def test(cls):

cls.\_\_name='xxx'

②静态方法

用装饰器@staticmethod标识

@staticmethod

def say():

print("hello")

5,魔法方法


①__XX__()函数叫做魔法方法,指的是具有特殊功能的函数

def __str__(self):

return f"名字{self.\_\_name},年龄{self.\_\_age}"

②__init__()

a,__init__():初始化对象

在创建一个对象时默认被调用,不需要手动调用

# 构造函数

def __int__(self):

pass

b,带参数的__init__()方法

# 构造函数

def __init__(self,name:str=“”,age:int=0):#这里的str与int只是需要的类型,给其他类型也不会报错

self.\_\_name=name
self.\_\_age=age

③__str__() --------- 类似Java语言中的toString()方法

a,print输出对象时,默认打印的是对象在内存中的地址

b,如果类中定义__str__方法,则会打印__str__方法中的内容

class Student:

# 1.私有化属性
\_\_name:str
\_\_age:int
def \_\_str\_\_(self):
    return f"名字{self.\_\_name},年龄{self.\_\_age}"

二,继承

====

1,单继承


父类,class 父类(object):

class Parent(object):

name='张三 '
def cook(self):
    print("正在煮饭\[辣椒炒肉\]")

子类,class 子类(父类):

class Mother(object):

def cook(self):
    print("正在煮饭\[红烧肉\]")

2,多继承


子类,class 子类(父类1,父类2)

class Parent(object):

name='张三 '
def cook(self):
    print("正在煮饭\[辣椒炒肉\]")

class Mother(object):

def cook(self):
    print("正在煮饭\[红烧肉\]")

class Son(Mother,Parent):

def cook\_test(self):
    super(Son,self).cook()
    print("正在煮饭\[茄子豆角\]")

注意,如果一个类继承多个父类,优先继承父类1的同名属性和方法

3,查看一个类的继承关系


类.__mro__

①    print(Parent.mro())

②    print(Son.__mro__)

4,子类重写父类的同名属性和方法


class Cs():

def cook(self):
    pass

class Parent(Cs):

def cook(self):
    print("正在煮饭\[辣椒炒肉\]")

class Mother(Cs):

def cook(self):
    print("正在煮饭\[红烧肉\]")

Parent,Mother重写了Cs的重名属性和方法

注意,如果子类重写了父类的同名属性和方法,则会调用子类中的同名属性和方法

5,子类调用父类的同名属性和方法


在子类的同名方法中调用,语法:父类类名.方法(self)

super(),调用父类方法,super().方法()

(适用于 单继承)

三,多态

====

1,概念


多态是一种使用对象的方式,子类重写父类方法,调用不同子类对象的相同父类方法,可以产生不同的执行效果

2,步骤


a,定义父类,提供父类方法

b,定义子类,重写父类方法

c,传递子类对象给调用者,返回不同的结果

四,完整代码如下

========

面向对象的语言

#定义类

Java class Person{ }

python 首字母需要大写

class Student:

name=‘小宝’

sex:str

age=20

def say(self):

self这个参数是当前这个对象,不需要自己传参

可以通过self去取得自身携带的一些东西,如属性

print(“hello”,self)

实例化

java new Student()

python

s=Student()

s2=Student()

#打印s 肯定是内存地址

print(s)

s.say()

name 实例属性

s.name=“张三”#添加了一个实例属性name 值是张三

Student.name=“haha”#修改了类属性

s有几个name属性? 【name类属性】【name实例属性】

del s.name #删除了name实例属性

s.birth=‘2021-1-1’#不会报错,python是弱类型,对变量没有类型限制,对对象没有属性限制

print(s.name)

print(s2.name)

class Student:

文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值