python之类的封装,继承,多态

本文详细介绍了Python的面向对象特性,包括封装的类与对象、self的使用、属性与方法(包括私有属性和方法)、魔法方法,接着探讨了继承的概念,如单继承、多继承、查看继承关系、重写与调用父类方法,最后解释了多态的概念和实现步骤。
摘要由CSDN通过智能技术生成

目录

一,封装

1,类和对象

①创建类,语法

②实例化对象

③调用类属性和方法语法

2,self

3,属性

①类属性

②添加对象属性

③获取对象属性

④私有属性和私有方法

a,设置私有属性和方法

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

4,方法

①类方法

②静态方法

5,魔法方法

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

②__init__()

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

二,继承

1,单继承

2,多继承

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

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

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

三,多态

1,概念

2,步骤

四,完整代码如下


一,封装

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,nam
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小宝的宝呢

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

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

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

打赏作者

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

抵扣说明:

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

余额充值