Python—基础语法:类和对象(类、方法、属性、实例对象、初始化函数、继承)详细解析


在介绍详细方法之前,先附上各种方式的调用语法
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

类是函数包,可以接纳多个函数
class 智能机器人():             #定义类
    身高 = 168
    体重 = 44                  #定义属性值
    智商 = 198
    def 打招呼():              #定义方法
        print('主人你好!')
    def 卖萌():
        print('主人,求抱抱!')
    def 生气():
        print('主人,我要报警了!')

print('把类的属性打印出来:')
print(智能机器人.身高)         #类调用不同的属性值
print(智能机器人.体重)
print(智能机器人.智商)

智能机器人.打招呼()
智能机器人.卖萌()            #类调用不同的方法
智能机器人.生气()

#结果展示
把类的属性打印出来:
168
44
198
主人你好!
主人,求抱抱!
主人,我要报警了!
#调用类属性
class 智能机器人():
    身高 = 168
    体重 = 44
    智商 = 198
    def 打招呼():
        print('主人你好!')
    def 卖萌():
        print('主人,求抱抱!')
    def 生气():
        print('主人,我要报警了!')

    @classmethod        #声明类方法,只有声明之后,才能使用“智能机器人”这个类中的方法
    def 自报信息(cls):   #一定要传入参数cls
        print('主人,我的基础信息有:')
        print('身高:',cls.身高)       #cls.身高 则是在调用类属性
        print('体重:',cls.体重)
        print('智商:',cls.智商)
        print('啦啦啦啦,有没有很喜欢我')
智能机器人.自报信息()
智能机器人.打招呼()       #智能机器人这个类再调用不同的方法
智能机器人.卖萌()
智能机器人.生气()

#结果展示
主人,我的基础信息有:
身高: 168
体重: 44
智商: 198
啦啦啦啦,有没有很喜欢我
主人你好!
主人,求抱抱!
主人,我要报警了!
#调用类方法
class 成绩单():       #定义类
    @classmethod     #声明类方法
    def 录入成绩单(cls):
        cls.学生姓名 = input('请输入学生姓名:')
        cls.语文_成绩 = int(input('请输入语文成绩:'))
        cls.数学_成绩 = int(input('请输入数学成绩:'))

    @classmethod
    def 计算平均分(cls):
        平均分 = (cls.语文_成绩 + cls.数学_成绩)/2
        return 平均分       #因为此方法我们需要调用,所以用return返回结果便于后面的调用

    @classmethod
    def 评级(cls):
        平均分 = cls.计算平均分()        #类方法调用其他的方法
        if 平均分>=90:
            print(cls.学生姓名 + '的评级是:优')
        elif 平均分>= 80 and 平均分<90 :
            print(cls.学生姓名 + '的评级是:良')
        elif 平均分>= 60 and 平均分<80 :
            print(cls.学生姓名 + '的评级是:中')
        else:
            print(cls.学生姓名 + '的评级是:差')

成绩单.录入成绩单()
成绩单.评级()

#结果展示
请输入学生姓名:猫看见
请输入语文成绩:85
请输入数学成绩:76
猫看见的评级是:良
给类方法传参的方式
#外部参数
class 加100类():
    def 加100函数(参数):
        总和 = 参数 + 100
        print('计算结果如下:')
        print(总和)
参数 = 1              #外部参数
加100.加100函数(参数)

#结果展示
计算结果如下:
101
#内部参数
class 加100类():
    def 加100函数(参数):
        总和 = 参数 + 100
        print('计算结果如下:')
        print(总和)
    参数 = 1              #内部参数     
加100.加100函数(参数)

#结果展示
计算结果如下:
101
#示例二
#内部参数
class 智能机器人():
    身高 = 168
    体重 = 44
    智商 = 198
    
    @classmethod
    def 自报信息(cls):
        print('主人,我的基础信息有:')
        print('身高:',cls.身高)      #内部参数
        print('体重:',cls.体重)
        print('智商:',cls.智商)
        print('啦啦啦啦,有没有很喜欢我')
智能机器人.自报信息()

#结果展示
主人,我的基础信息有:
身高: 168
体重: 44
智商: 198
啦啦啦啦,有没有很喜欢我
#同时传入内部和外部参数
class 加100类():
    变量 = 100       
    
    @classmethod
    def 加100函数(cls,参数):
        总和 = cls.变量 + 参数
        print('加100函数计算结果如下:')
        print(总和)

参数 = int(input('请输入一个整数:'))100.加100函数(参数)

#结果展示
请输入一个整数:25100函数计算结果如下:
125
增加/修改类属性
#从外部修改类属性
变量1 = 15
变量2 = 'abc'

classA():
    变量1 = 100
    
变量1 =A.变量1A.变量2 = 变量2

print(A.变量1)      
print(A.变量2)

#结果展示
100
abc
#从内部修改/增加类属性
class ():          #定义类
    @classmethod          #声明类方法
    def 增加类属性(cls):     
        cls.变量 = input('请随意输入字符串:')    #从内部增加属性   

类.增加类属性()                    #调用类方法

print('打印新增的类属性:')
print(.变量)                  #调用属性并打印出来

#结果展示
请随意输入字符串:猫看见
打印新增的类属性:
猫看见

类的实例对象

在这里插入图片描述

实例属性和类属性
#实例属性与类属性完全相同
class ():
    变量 = 100

实例1 = () # 实例化
实例2 = () # 实例化

print(.变量)
print(实例1.变量)  
print(实例2.变量)

#结果展示
100
100
100
#修改或者新增类属性,实例属性也会跟着改变
class ():
    变量 = 100

实例1 = () # 实例化
实例2 = () # 实例化
print(实例1.变量)
print(实例2.变量).变量 = 'abc'   # 修改类属性
print(实例1.变量)   # 实例属性同步变化
print(实例2.变量)   # 实例属性同步变化

#结果展示
100
100
abc
abc
#实例属性的修改并不会影响到类属性
class ():
    变量 = 100

实例1 = () # 实例化
实例2 = () # 实例化

print('原先的类属性:')
print(.变量)
print('原先的实例1属性:')
print(实例1.变量)
print('原先的实例2属性:')
print(实例2.变量)

实例1.变量 = 'abc'
print('--------修改实例1的属性后----------') 

print('现在的类属性:')
print(.变量)
print('现在的实例1属性:')
print(实例1.变量)
print('现在的实例2属性:')
print(实例2.变量)

#结果展示
原先的类属性:
100
原先的实例1属性:
100
原先的实例2属性:
100
--------修改实例1的属性后----------
现在的类属性:
100
现在的实例1属性:
abc
现在的实例2属性:
100

新增实例属性,不能直接用类调取实例属性,因为增加实例属性不影响类
在这里插入图片描述
在这里插入图片描述

实例方法和类方法
#“重写类方法”分成两个步骤:第一个步骤是在类的外部写一个函数,第二个步骤是把这个新函数的名字赋值给类.原始函数
class ():
    def 原始函数(self):
        print('我是原始函数!')

def 新函数(self):         #定义新方法
    print('我是重写后的新函数!')

a = ()  # 实例化
a.原始函数()

# 用新函数代替原始函数,也就是【重写类方法】
类.原始函数 = 新函数

# 现在原始函数已经被替换了
a.原始函数()

#结果展示
我是原始函数!
我是重写后的新函数!

在这里插入图片描述

初始化函数
class ():
    def __init__(self):        #写法是固定的
        print('实例化成功!')

实例 = ()
#可以接受参数传递
class 成绩单():
    def __init__(self,学生姓名,语文_成绩,数学_成绩):       #定义初始化函数
        self.学生姓名 = 学生姓名
        self.语文_成绩 = 语文_成绩
        self.数学_成绩 = 数学_成绩

    def 打印成绩单(self):
        print(self.学生姓名 + '的成绩单如下:')
        print('语文成绩:'+ str(self.语文_成绩))
        print('数学成绩:'+ str(self.数学_成绩))
        
成绩单1 = 成绩单('张三',99,88)
成绩单2 = 成绩单('李四',64,73)       #传入参数
成绩单3 = 成绩单('王五',33,22)

成绩单1.打印成绩单()
成绩单2.打印成绩单()       #实例对象调用方法
成绩单3.打印成绩单()

#结果展示
张三的成绩单如下:
语文成绩:99
数学成绩:88
李四的成绩单如下:
语文成绩:64
数学成绩:73
王五的成绩单如下:
语文成绩:33
数学成绩:22

类的继承(父类,子类)

在这里插入图片描述

百分百继承父类的方法
class 父类():
    def __init__(self,参数):
        self.变量 = 参数

    def 打印属性(self):
        print('变量的值是:')
        print(self.变量)

class 子类(父类):     #继承
    pass  # pass语句代表“什么都不做”

子类实例 = 子类(2)
子类实例.打印属性()
print('---------此处是分界线----------')
父类实例 = 父类(3)
父类实例.打印属性()

#结果展示
变量的值是:
2
---------此处是分界线----------
变量的值是:
3
在继承的基础上新增方法
class 基础机器人():
    def __init__(self,参数):
        self.姓名 = 参数

    def 自报姓名(self):
        print('我是' + self.姓名 + '!')     

    def 卖萌(self):
        print('主人,求抱抱!')

class 高级机器人(基础机器人):       #继承
    def 高级卖萌(self):          #新增方法
        print('主人,每次想到怎么欺负你的时候,就感觉自己全身biubiubiu散发着智慧的光芒!')

安迪 = 高级机器人('安迪')

安迪.自报姓名()
安迪.卖萌()
安迪.高级卖萌()

#结果展示
我是安迪!
主人,求抱抱!
主人,每次想到怎么欺负你的时候,就感觉自己全身biubiubiu散发着智慧的光芒!
覆盖父类方法
class 基础机器人():
    def __init__(self,参数):
        self.姓名 = 参数

    def 自报姓名(self):
        print('我是' + self.姓名 + '!')     

    def 卖萌(self):
        print('主人,求抱抱!')

class 高级机器人(基础机器人):
    def 自报姓名(self):         #覆盖父类的方法
        print('我是高级机器人' + self.姓名 + '!')

    def 卖萌(self):
        print('主人,每次想到怎么欺负你的时候,就感觉自己全身biubiubiu散发着智慧的光芒!')

安迪 = 高级机器人('安迪')
安迪.自报姓名()
安迪.卖萌()

#结果展示
我是高级机器人安迪!
主人,每次想到怎么欺负你的时候,就感觉自己全身biubiubiu散发着智慧的光芒!
多重继承
class 基础机器人():
    def 卖萌(self):
        print('主人,求抱抱!')
 # 注:因为多重继承要求父类是平等的关系,所以这里的“高级机器人”没有继承“基础机器人”
class 高级机器人(): 
    def 高级卖萌(self): 
        print('主人,每次想到怎么欺负你的时候,就感觉自己全身biubiubiu散发着智慧的光芒!')
class 超级机器人(基础机器人,高级机器人):     #多重继承
    def 超级卖萌(self): 
        print('pika, qiu!')
      
皮卡 = 超级机器人()
皮卡.卖萌()
皮卡.高级卖萌()
皮卡.超级卖萌()

#结果展示
主人,求抱抱!
主人,每次想到怎么欺负你的时候,就感觉自己全身biubiubiu散发着智慧的光芒!
pika, qiu!
  • 56
    点赞
  • 217
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值