Python类

初试类


1、类(Class):指把具有相同特性(数据)和行为(函数)的对象抽象为类。数据通过类内的局部变量来实现对数据的读写操作,函数可以实现对类的相关行为的操作。
   实例(Instance):是把类通过等号(=)赋值给一个变量的过程,就是实例化过程,这个变量就是实例。
2、代码

class Box1():
    '''求立方体的类'''
    def __init__(self,length1,width1,height1):
        self.length=length1
        self.width=width1
        self.height=height1
    def volume(self):
        return self.length*self.width*self.height
    def setNewLength(self,length1):
        self.length=length1
my_box1=Box1(10,10,10)
print('立方体的长度:',my_box1.length)
print('立方体体积是%d'%(my_box1.volume()))

属性使用


1、属性(Property):是通过__init__函数定义,并通过self传递给实例的一种数据类型。
2、属性值初始化
 1> 在__init__里直接初始化
 

def __init__(self):
    self.length=0
    self.width=0
    self.height=0

 2> 传递参数初始化
 

def __init__(self,length1,width1,height1):
    self.length=length1
    self.width=width1
    self.height=height1


3、属性值修改
 1> 直接对属性值进行修改

my_box1.length=20

2> 通过方法对属性值进行修改

def setNewLength(self,length1):
    self.length=length1

4、把类赋给属性

class Color1():
    def __init__(self,index=0):
        self.set_color=['white','red','black','green']
        self.index=index
    def setColor(self):
        return self.set_color[self.index]

class Box2():
    def __init__(self,length1,width1,heigth1,c1=0):
        self.length=length1
        self.width=width1
        self.heigth=heigth1
        self.color0=Color1(c1).setColor()
    def volume(self):
        return self.length*self.width*self.height

my_box2=Box2(10,10,10,1)
print(my_box2.color0)

类改造问题


1、继承(Inheritance):就是在继承原有类功能的基础上,增加新的功能(属性或方法),形成新的子类。
2、代码

class Box3(Box1):
    '''求立方体的类'''
    def __init__(self,length1,width1,height1):
        super().__init__(length1,width1,height1)
        self.color='white'
        self.material='paper'
        self.type='fish'
    def area(self):
        re=self.length*self.width+self.length*self.height+self.width*self.height
        return re*2
    def volume(self,num=1):
        return self.length*self.width*self.height*num

my_box3=Box3(10,10,10)
print('立方体的表面积是:',my_box3.area())
print('5个立方体体积是%d'%(my_box3.volume(5)))
print('Box颜色%s,材质%s,类型%s'%(my_box3.color,my_box3.material,my_box3.type))

私有


私有(private):类内私有的变量和函数只允许这个类自身访问,没有被实例调用的权利。
    操作:在变量名或函数名前加上双下划线__

把类放到模块中


Class_module.py

class Box1():
    '''求立方体的类'''
    def __init__(self,length1,width1,height1):
        self.length=length1
        self.width=width1
        self.height=height1
    def volume(self):
        return self.length*self.width*self.height
    def setNewLength(self,length1):
        self.length=length1

class Box4(Box1):
    '''求立方体的类'''
    def __init__(self,length1,width1,height1):
        super().__init__(length1,width1,height1)
        self.color='white'
        self.material='paper'
        self.type='fish'
    def area(self):
        re=self.length*self.width+self.length*self.height+self.width*self.height
        return re*2
    def volume(self,num=1):
        return self.length*self.width*self.height*num
from Class_module import *
my_box4=Box4(10,10,10)
print('立方体的表面积是:',my_box4.area())
print('6个立方体体积是%d'%(my_box4.volume(6)))
print('Box颜色%s,材质%s,类型%s'%(my_box4.color,my_box4.material,my_box4.type))

类回顾


1、静态类:不支持实例化的类(数据+函数)
   动态类:可以创建实例的类(属性+方法)
 静态类和动态类的关键区别:
    静态类内部没有self关键字,不能被实例化
    静态类不能通过类名传递参数
    静态类不支持__init__初始化函数
    静态类不能被真正实例化,但是它可以集成变量或函数,是一个带结构的数据类型
    

class StaticC():
    name='Tom'
    age=20
    def a():
        print('第一个函数')
    def b(add=1):
        print('第二个函数:',add)
    def c(add=1):
        print('第三个函数:',add)
        return add

print('静态类name:',StaticC.name)
StaticC.age=10
print('静态类age:',StaticC.age)
StaticC.a()

2、面向对象编程的核心方法:
a、封装(Encapsulation):是将现实世界中存在的某个客体的属性和行为绑定在一起,并放置在一个逻辑单元内。
b、继承(Inheritance):描述了子类属性从祖先继承这样一种方式。
    issubclass(Box1,Box2):判断Box1和Box2是否存在父子关系
c、多态(Polymorphism):指相同的函数可作用于多种类型的对象上并获得不同的结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值