Pycharm——10 类-1

10.4 类改造

10.4.4 super

super(1)
super(2)

10.4.3 多继承

多继承意思就是一个类同时继承了多个父类

10.4.2 单继承

10.4.1 继承 Inheritance

不不由任意内置类型派⽣生出的类,称之为经典类。

在原有类功能的基础上,增加新的功能(属性或者方法),形成新的子类。被继承的叫父类

Python面向对象的继承指的是多个类之间的所属关系,即子类默认继承父类的所有属性和方法。

语句格式

class 子类名(父类名)
class 子类名(父类名1,父类名2,父类名3…)

  1. 经典类
class 类名:
    代码
    ......
  1. 新式类
class 类名(object):
    代码
    ......
# 继承:子类默认继承父类的所有属性和方法

# 1. 定义父类
class A(object):
    def __init__(self):
        self.num = 1

    def info_print(self):
        print(self.num)

# 2. 定义子类 继承父类
class B(A):
    pass

# 3. 创建对象,验证结论
result = B()
result.info_print()
用继承实现Box1类的继承

继承步骤:

  1. 在子类声明时,引入父类Box2(Box1)
  2. 重新定义子类的__init__函数,若父类__init__函数有参数,则照抄父类的函数
  3. 在子类__init__函数里提供super函数,实现父类和子类的关联,若父类有参数,需要同步参数(无self)
  4. 在子类中增加新的属性定义
  5. 在子类中增加新的方法method定义
# 类定义,类名为Box1
class Box1():
    '''求立方体的类'''
    # 传递类参数的保留函数
    def __init__(self, lenght1, with1, height1):
        # 属性定义,长宽高
        self.lenght = lenght1
        self.width = with1
        self.height = height1
    # 方法定义
    # 求立方体体积的函数volume,并供实例调用
    def volume(self, num = 1):
        return self.lenght*self.height*self.width*num

class Box2(Box1):
    def __init__(self, lenght1, with1, height1):
        # super实现父类与子类的关联
        super().__init__(lenght1, with1, height1)
        self.color1 = 'white'
        self.material1 = 'paper'
        self.type1 = 'fish'
    def area(self):
        re = self.lenght*self.width+self.lenght*self.height+self.width*self.height
        return re*2
    # 重新定义
    def volume(self, num=1):
        return self.lenght * self.height * self.width * num

# 实例名.方法名
my_box2 = Box2(10, 10, 10)
value = my_box2.volume()

print('立方体的体积是:%d' % (my_box2.volume()))

print('立方体的表面积是:%d' % (my_box2.area()))
# 重写方法
print('5个立方体的体积是:%d' % (my_box2.volume(5)))

print('颜色:', my_box2.color1)
print('材质:', my_box2.material1)
print('类型:', my_box2.type1)

# print('颜色:%s,材质:%s,类型:%s' % (my_box2.color1(), my_box2.material1, my_box2.type1))


10.4.2 重写方法

    def volume(self, num = 1):
        return self.lenght*self.height*self.width*num

10.3 属性

10.3.1 属性值初始化

在__init__;直接初始化值
        self.lenght = 0
        self.width = 0
        self.height = 0
传递参数初始化

10.3.2 属性值修改

直接对属性值进行修改
# 类定义,类名为Box1
class Box1():
    '''求立方体的类'''

    def __init__(self):
        # 属性定义,长宽高
        self.lenght = 0
        self.width = 0
        self.height = 0
    
B1 = Box1()
# 读取属性值
print(B1.lenght)
B1.lenght = 10
print(B1.lenght)
B2 = Box1()
B2.lenght = 20
print(B2.lenght)
通过method对属性值修改
# 类定义,类名为Box1
class Box1():

    def __init__(self):
        # 属性定义,长宽高
        self.lenght = 0
        self.width = 0
        self.height = 0
    # 定义修改属性length的函数
    def setNewLength(self,length1):
        self.lenght = length1

B1 = Box1()
# 通过setNewLength修改
B1.setNewLength(15)
# 修改后的值
print(B1.lenght)

10.3.3 把类赋给属性

把颜色类赋给颜色属性

class Color1():
    def __init__(self, index=0):
        # index指定颜色列表下标
        # 定义列表类颜色属性
        self.set_color = ['white', 'red', 'black', 'green']
        # 定义下标属性,为了可以在实例之间传递
        self.index = index
    def setColor(self):
        return self.set_color[self.index]

class Box1():
    '''求立方体的类'''
    def __init__(self, lenght1, with1, height1, c1=0):# 传递类参数的保留函数
        # 属性定义,长宽高
        self.lenght = lenght1
        self.width = with1
        self.height = height1
        self.color0 = Color1(c1).setColor()
    # 方法定义
    # 求立方体体积的函数volume,并供实例调用
    def volume(self):
        return self.lenght*self.height*self.width

my_box1 = Box1(10,10,10,1)
print(my_box1.color0)
red

10.2 实例(Instance)

10.2.1实例实现

my_box1 = Box1(10, 10, 10)的赋值过程,就是建立类Box1的一个实例对象过程。

10.2.2 多实例

同一个类可以给多个实例对象赋值,那就是多例。每个实例之间互不干扰。
实例中调用的volume()是方法,不是函数。
在类中,volume()称为方法、函数都可以。

my_box2 = Box1(3, 10, 10)
print('立方体的体积是:%d' % (my_box2.volume()))
my_box3 = Box1(10, 5, 9)
print('立方体的体积是:%d' % (my_box3.volume()))
立方体的体积是:300
立方体的体积是:450

10.2.3 实例的属性、方法

属性调用语句格式
# 实例名.属性名
tt = my_box1.lenght
print(tt)
方法调用语句格式
# 实例名.方法名
my_box1 = Box1(10, 10, 10)
value = my_box1.volume()

10.1 类

面向过程的编程(procedure oriented,PO)
以过程为中心的编程方法
面向对象的编程(object oriented,OO)

10.1.1 类class

把具有相同特性(数据)和行为(函数)的对象抽象为类。
数据通过类内的局部变量来实现对数据的读写操作。
函数可以实现对类的相关行为的操作。
示例:
抽象成类的过程:

  1. 归类
  2. 提取事物的特性
  3. 确定时代物相关的操作行为
    示例: 体积函数类
# 类定义,类名为Box1
class Box1():
    '''求立方体的类'''
    def __init__(self, lenght1, with1, height1):# 传递类参数的保留函数
        # 属性定义,长宽高
        self.lenght = lenght1
        self.width = with1
        self.height = height1
    # 方法定义
    # 求立方体体积的函数volume,并供实例调用
    def volume(self):
        return self.lenght*self.height*self.width
my_box1 = Box1(10, 10, 10)
print('立方体的体积是:%d' % (my_box1.volume()))

10.1.2 知识点

class关键字:所有的类定义必须以class开始。
类名:约定类名首字母需要大写,增加阅读性。
类的语句格式
class 类名():
类文档说明

用3个单引号,是使用方法和函数的文档说明时一样的。

类函数(方法(method))

类函数在类或者实例中又称方法(method)。
方法必须依赖类或者实例存在。
以上算法中包括__init__和volume两个函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值