python封装之后的调用_python(类的封装调用/继承/多态)

Python

Python开发

Python语言

python(类的封装调用/继承/多态)

一、类的定义

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

对象:类实例化出来的叫做对象

对象和类的关系:类和对象的关系就像模具和铸件的关系,类的实例化的结果就是对象,而对对象的抽象就是类。

类和实例

面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如 Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

仍以 Student 类为例,在 Python 中,定义类是通过 class 关键字:

classStudent(object):pass

class 后面紧接着是类名,即 Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有合适的继承类,就使用 object类,这是所有类最终都会继承的类。

1.类定义:

class定义类

class 后面加 类名称 加 () 加 :

2.类名称定义规范:

不要以纯数字命名

不要以python中保留字符(关键字)来命名

不要以文件名命名

不能出现特殊字符

要简短且见名知义

当类名称中有多个单词时,应采用驼峰式(每个单词首字母大写) --> XinFangShuo()

定义好了 Student 类,就可以根据 Student 类创建出 Student 的实例,创建实例是通过类名+()实现的:

bart = Student()

可以看到,变量 bart 指向的就是一个 Student 的实例,而 Student 本身则是一个类。

由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把 name,score 等属性绑上去:

classStudent(object):def __init__(self, name, score):

self.name=name

self.score= score

注意:特殊方法“__init__”前后分别有两个下划线!!!

注意到__init__方法的第一个参数永远是 self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到 self,因为 self 就指向创建的实例本身。

有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但 self 不需要传,Python 解释器自己会把实例变量传进去:

bart = Student('Bart Simpson', 59)

和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量 self,并且调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认

参数、可变参数、关键字参数和命名关键字参数。

class Four(): #类的定义

defsub(self,x,y):return x +y"""class Dog():

def __init__(self,name,age):

self.name = name

self.age = age

def sit(self):

print (self.name.title() + ' ' + "is now sitting")

def roll_over(self):

print (self.name.title() + ' ' + "is now roll over")

my_dog = Dog('willie',6) #参数实例化

# your_dog = Dog('lucy',3)

my_dog.sit()

my_dog.roll_over()"""

"""class Four_operations():

def __init__(self,a,b):

self.a = int(a)

self.b = int(b)

def add(self):

return self.a + self.b

def reduce(self):

return self.a - self.b

def ride(self):

return self.a * self.b

def Except(self):

return self.a / self.b

operation = Four_operations('12','4')

print operation.add()

print operation.reduce()

print operation.ride()

print operation.Except()"""

二、类的调用

调用类下的方法,必需通过类的的实例/类名()进行调用

当类中初始化方法__init__中存在参数时,则在实例化时,需要往实例括号中传入参数

当类中无初始化方法或者__init__中不存在参数时,则在实例化时,不需要往实例括号中传入参数,而在调用方法时再进行传参

classFour():defsub(self,x,y):return x +yprint Four().sub(2,3)classFour_operations():def __init__(self,a,b):

self.a=int(a)

self.b=int(b)defadd(self):return self.a +self.bdefreduce(self):return self.a -self.bdefride(self):return self.a *self.bdefExcept(self):return self.a /self.b

operation= Four_operations('12','4') #实例化

printoperation.add()printoperation.reduce()printoperation.ride()print operation.Except()

三、继承

1.单继承和多继承

一个对象使用另一个对象的属性和方法,被继承的类也称父类

多重继承就是一个子类继承多个父类

classFour():defsub(self,x,y):return x +yclass Five(Four): #Five类继承了Four类 --> Five 类拥有了 Four 类下的所有函数方法

defjian(self,a,b):return a -bprint Five().sub(2,5)

classFather():def __init__(self,name,sport,sex):

self.name=name

self.sport=sport

self.sex=sexdefSurname(self):print self.name + "姓张"

defhobby(self):print self.name + "like" + " " +self.sportclassSon(Father):defstudy(self):print self.name + " " + "study very good"

defSex(self):print self.name + " " + "is" + " " +self.sex

so= Son('张四',"play basketball","boy")

so.Surname()

so.hobby()

so.study()

so.Sex()

classcar():"多继承"

def __init__(self,brand,type,year,mileage):

self.brand=brand

self.type=type

self.year=year

self.mileage=mileagedefmake(self):print self.brand + self.type + "是" + str(self.year) + "生产的!"

defupdate_mileage(self,mile):if mile

classaircraft():def __init__(self,name,destination):

self.name=name

self.destination=destinationdefbound(self):print self.name + "开往" +self.destinationclassboat(car,aircraft):def __init__(self,brand,type,year,mileage,name,destination):

self.brand=brand

self.type=type

self.year=year

self.mileage=mileage

self.name=name

self.destination=destination

my_boat= boat("泰坦","尼克号",2010,500,"泰坦尼克号","宁波")

my_boat.make()

my_boat.bound()

四、多态(重写父类方法)

classFour():defsub(self,x,y):return x +yclass Five(Four): #Five类继承了Four类 --> Five 类拥有了 Four 类下的所有函数方法

defjian(self,a,b):return a -bdefsub(self,x,y):return x *yprint Five().sub(3,6)

内容来源于网络,如有侵权请联系客服删除

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值