Python之类

定义:

 类(class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。

局部变量:定义在方法中的变量,只作用于当前实例的类

实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。

继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。

实例化:创建一个类的实例,类的具体对象。

方法:类中定义的函数。

方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

类的专有方法:

  • __init__ : 构造函数,在生成对象时调用
  • __del__ : 析构函数,释放对象时使用
  • __repr__ : 打印,转换
  • __setitem__ : 按照索引赋值
  • __getitem__: 按照索引获取值
  • __len__: 获得长度
  • __cmp__: 比较运算
  • __call__: 函数调用
  • __add__: 加运算
  • __sub__: 减运算
  • __mul__: 乘运算
  • __truediv__: 除运算
  • __mod__: 求余运算

__pow__: 乘方

对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

和其它编程语言相比,Python 在尽可能不增加新的语法和语义的情况下加入了类机制。

Python中的类提供了面向对象编程的所有基本功能:

类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。

语法格式:

class ClassName:
    <statement-1>
    .
    .
    .
    <statement-N>

简单使用:

class Ticket():
    def __init__(self,checi,chufa,daoda,fdate,ftime,dtime):#构造
        self.checi=checi
        self.chufa=chufa
        self.daoda=daoda
        self.fdate=fdate
        self.ftime=ftime
        self.dtime=dtime
    def printinf(self):
        print("车次:",self.checi)
        print("出发站:",self.chufa)
        print("到达站:",self.daoda)
        print("发车日期:",self.fdate)
        print("发车时间:",self.ftime)
        print("到达时间:",self.dtime)
a=Ticket("G37","西安","北京","2019-05-21","10:05","15:07")
print(a1.ftime)
a.printinf()

实现效果: 

 

 继承:

类的继承:

可以将多个类共有的方法提取到父类中,子类仅需继承父类;

基本语法为class新类名(父类1,父类2,..)

单继承与多继承区别:

Python同时支持单继承与多继承,当只有一个父类时为单继承,当存在多个父类时为多继承。

继承的性质特征:

子类会继承父类的所有的属性和方法,子类也可以覆盖父类同名的变量和方法。

调用方法执行顺序:

在调用方法时,先调用子类自己的方法,子类无,再去父类中查找。查找顺序是自左(从上往下)向右。

如果多个父类,再无共同的父类,则自左执行到顶,再往右执行。

如果有共同的父类,则自左执行到倒数第二层,再向右执行,最后再执行最顶层。 

多态:

指参数的“有多种形式”、多种形态,意味着就算不知道变量所引用的对象类是什么,还是能对它进行操作,而它也会根据对象(或类)类型的不同而表现出不同的行为。

语法格式: 

class 父类:
    def __init__(self)    #定义父类方法
    .
    .
    .
    <statement-N>
class 子类1(父类)
    def __init__(self1)    #定义子类方法
        父类.__init__(self)    #继承父类中方法

class 子类2(父类)
    def __init__(self2)    #定义子类方法
        父类.__init__(self)    #继承父类中方法

举例使用:

from prettytable import PrettyTable
class Ticket():#定义一个父类
    def __init__(self,from_station,to_station,f_date,t_date,id,wu):#定义父类中的方法
        self.id=id
        self.from_station=from_station
        self.to_station=to_station
        self.f_date=f_date
        self.t_date=t_date
        self.wu=wu
    def display(self):
        print(self.id,self.from_station,self.to_station,self.f_date,self.t_date,self.wu)
        
class Gt(Ticket):#定义一个子类
    def __init__(self,from_station,to_station,f_date,t_date,id,ydeng,edeng,wu):#定义子类中的方法
        Ticket.__init__(self,from_station,to_station,f_date,t_date,id,wu)#继承父类的构造方法
        self.ydeng=ydeng
        self.edeng=edeng
    def display(self,pt):    
        pt.add_row(list([self.id,self.from_station,self.to_station,self.f_date,self.t_date,self.ydeng,self.edeng,self.wu]))      
        
class Pt(Ticket):#定义一个子类
    def __init__(self,from_station,to_station,f_date,t_date,id,rwo,ywo,yzuo,wu):#定义子类中的方法
        Ticket.__init__(self,from_station,to_station,f_date,t_date,id,wu)#继承父类的构造方法
        self.rwo=rwo
        self.ywo=ywo
        self.yzuo=yzuo
    def display(self,pt):
        pt.add_row(list([self.id,self.from_station,self.to_station,self.f_date,self.t_date,self.rwo,self.ywo,self.yzuo,self.wu]))
       
g1=Gt("xian","beijing","10:00","15:00","G33",5,7,8)
g2=Gt("xian","beijing","10:00","15:00","D344",5,7,8)
t1=Pt("xian","beijing","10:00","15:00","K55",5,7,8,9)
t2=Pt("xian","beijing","10:00","15:00","T66",5,7,8,9) 
pt=PrettyTable("车次 出发站 到达站 出发时间 到达时间 一等座 二等座 无座".split())
for i in [g1,g2]:
    i.display(pt)
print(pt)
pt=PrettyTable("车次 出发站 到达站 出发时间 到达时间 软卧 硬卧 硬座 无座".split())
for i in [t1,t2]:
    i.display(pt)
print(pt)

实现效果: 

 

调用PrettyTable模块美化输出结果

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值