《Python编程:从入门到实践》_9章:类

【汇总】:https://blog.csdn.net/wistonty11/article/details/121348048
【2章:变量和简单数据类型】:https://blog.csdn.net/wistonty11/article/details/114553239
【3章:列表简介】:https://blog.csdn.net/wistonty11/article/details/114673314
【4章:列表操作】:https://blog.csdn.net/wistonty11/article/details/114684679
【5章:if语句】:https://blog.csdn.net/wistonty11/article/details/114932777
【6章:字典】https://blog.csdn.net/wistonty11/article/details/117432520
【7章:用户输入和while循环】:https://blog.csdn.net/wistonty11/article/details/117437656
【8章:函数】:https://blog.csdn.net/wistonty11/article/details/117448978
【9章:类】:https://blog.csdn.net/wistonty11/article/details/117521111

# time:2021.06.03 
# 收录在《口袋图书》系列:随时随地便于阅读
# 只节选了 重要/必要内容, 例子适当的简化
# 本文为摘抄总结 望赞鼓励

在这里插入图片描述

9.1 创建和使用

类就是 一个功能,一种东西等,具有相同特性的东西打包了。如果一个表,按功能,可以一个类来写这个表怎么走的,一个类来实现表的现实,高级点的 一个类来实现温度,一个类实现湿度等

9.1.1 创建和调用

① 创建

class cat():
    
    def __init__(self,name):
        self.name = name
        
    def eat(self):
        print(self.name.title() + " is eating now!")
  • 类中的函数称为方法.本例子有两个方法: init , eat

  • init 是特殊的方法,就是初始化。形式:前后两个_

  • 形参self必不可少,还必须在其他形参之前。

  • 需要self的原因:访问自身的属性和方法 :eat必须加self是因为用到了self.name

② 调用类中属性和函数

class cat():
    
    def __init__(self,name):
        self.name = name
        
    def eat(self):
        print(self.name.title() + " is eating now!")


my_cat = cat('旺旺')

print("My cat's name is " + my_cat.name.title() + ".")
print("----")
my_cat.eat()
My cat's name is 旺旺.
----
旺旺 is eating now!
  • my_cat.name调用类:cat中属性:name方法
  • my_cat.eat()调用的是类中函数:eat()

9.1.2 给属性设定默认值

class animal():
    
    def __init__(self,name):
        self.name = name
        self.kind = 'cat' # <------注意
        
    def eat(self):
        print(self.name.title() + " is eating now!")
        
my_animal = animal('旺旺')        
print("My "+my_animal.kind + "'s name is " + my_animal.name.title() + ".")
My cat's name is 旺旺.
  • my_animal.kind调用了animal里属性kind的默认值‘cat’

9.1.3 修改属性的值

① 直接修改

class animal():
    
    def __init__(self,name):
        self.name = name
        self.kind = 'cat' 
        
    def eat(self):
        print(self.name.title() + " is eating now!")
        
my_animal = animal('旺旺') 
my_animal.kind = '肥猫'   # <------注意
print("My "+my_animal.kind + "'s name is " + my_animal.name.title() + ".")
My 肥猫's name is 旺旺.
  • 修改方法就是直接调用这个属性,然后赋值就行了。我这里把肥猫赋给了有默认的kind属性

② 通过方法(类中函数)修改

class animal():
    
    def __init__(self,name):
        self.name = name
        self.kind = 'cat' 
        
    def eat(self):
        print(self.name.title() + " is eating now!")
        
    def update_kind(self,get_kind):   # <------注意
        self.kind = get_kind
        
    my_animal = animal('旺旺') 
    print("My "+my_animal.kind + "'s name is " + my_animal.name.title() + ".")
        
    my_animal.update_kind('猪猪猫')  # <------注意
    print("My "+my_animal.kind + "'s name is " + my_animal.name.title() + ".")
My cat's name is 旺旺.
My 猪猪猫's name is 旺旺.
  • 用了一个函数:update_kind来对类:animal里面的种类kind进行修改,把默认cat改成了猪猪猫

9.2 继承

就是我们设计类B的时候,不需要每次都从0开始设计,我们可能会用到A,那么就用到了继承

9.2.1 子类的方法

class animal():
    
    def __init__(self,name):
        self.name = name
        
    def eat(self):
        print(self.name.title() + " is eating now!")       
        
class cat(animal):         # <------注意
    def __init__(self, name):
        super().__init__(name)
        
my_cat = cat('旺旺') 

print("My cat's name is " + my_cat.name.title() + ".")
print("----")
my_cat.eat()
My cat's name is 旺旺.
----
旺旺 is eating now!
  • 我们实现了 类cat继承了它父类(animal):名字属性(name)和方法(eating)

  • 实现的形式:class 子类名称(父类名称):

  • 用__init__(self, name)来接受实例name

  • 父类也称为超类超 (superclass)用super().init(name),将父类和子类关联起来。

9.2.2 给子类添加属性和方法

让一个类继承另一个类后,可添加区分子类和父类所需的新属性和方法。

class animal():
    
    def __init__(self,name):
        self.name = name
        
    def eat(self):
        print(self.name.title() + " is eating now!")       
        
class cat(animal):         
    def __init__(self, name):
        super().__init__(name)
        self.age = 3     #  <------注意①
        
    def update_age(self,get_age):   # <------注意②
        self.age = get_age
        
    def roll_over(self): 
       print(self.name.title() + "在打滚!") # <------注意③
    
        
my_cat = cat('旺旺') 
my_cat.update_age(4)
print(my_cat.name.title()+ str(my_cat.age) + "岁了.") # <------注意④
my_cat.roll_over()
旺旺4岁了.
旺旺在打滚!
  • ① 使子类比父类多了属性:age

  • ② 子类中增加方法,实现对子类属性age的更新

  • ③ 使子类比父类多了方法(类中函数): rolling_over()

  • ④ 调用子类中属性:cat.age

  • ⑤ 调用子类中方法:cat.rolling_over

9.2.3 子类中更改父类中继承的属性和方法

class animal():
    
    def __init__(self,name):
        self.name = name
        self.age = 3
        
    def eat(self):
        print(self.name.title() + " 正在吃猫粮!")       
        
class cat(animal):         
    def __init__(self, name):
        super().__init__(name)
        self.age = 4     #  <------注意①
        
    def eat(self):
        print(self.name.title() + "正在吃猫罐头!")   #  <------注意②
    
        
my_cat = cat('旺旺') 
print(my_cat.name.title()+ str(my_cat.age) + "岁了.") # 
my_cat.eat()
旺旺4岁了.
旺旺正在吃猫罐头!
  • 更改方法就是同名进行重新定义(赋值)

= 本来继承父类时候 默认为3岁 在吃猫粮,继承后 重新同名定义(赋值),改为了吃猫罐头,4岁

9.3 导入类

导入类和导入函数一样

① 从一个模块导入一个类 或者多个类

# 从模块car.py中导入单个类Car
from car import Car

# 从模块car.py中导入两个类Car, ElectricCar
from car import Car, ElectricCar

② 导入整个car模块

import car

③ 导入模块中所有类

from module_name import *
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

羊老羊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值