导入 python_Python新手上车21: 导入类

95c1183fd70b161509aa47601bc906c8.png

      和函数一样,类也可以导入,将类存储在模块中,并在主程序中导入类,这样不至于让主程序过于复杂。

064ac64c4ddb1e9f3b9f47aed1e51584.png

导入单个类

      我们将上一期定义的class Pet 存储在pet.py中:

pet.py

class Pet():    def __init__(self,name,ptype):    #初始化 name和 ptype属性        self.name=name         self.ptype=ptype    def drink_water(self):    #定义一个喝水的方法        print("My pet is a "+self.ptype+",it called "+self.name.title()+";Now it is drinking")    def play_ball(self):    #定义一个打球的方法        print(self.name.title()+" is playing ball")

第一行:我们创建一个Pet类

第二行:初始化方法__init__()是Python的内置函数,init 前后各有两个下划线,这是固定的写法,你只需要知道,当你创建实例(本例中就是你指定的具体的小宠物,下面还会讲到)时,python都会自动运行这个init方法,同时我们传入了三个形参,self 必须位于第一个,每个与类相关联的方法调用时均会自动传递实参self,本例中我们创建实例时只需要传递实参name和实参ptype即可。

第三行:注释

第四、五行:以self为前缀的变量可以供类中其他方法进行使用,我们将形参name赋值给self.name ,类里面的其他方法就可以使用self.name来使用形参name的值,像这样的变量我们称之为属性第六行:定义一个喝水的方法,方法中含有一个形参self

第七行:注释

第八行:打印宠物的类型、姓名,并打印小狗正在喝水,调用小狗属性,如名字时,只需要使用 self.name 即可

第九行:定义一个玩球的方法

第十行:注释

第十一行:打印特定名字的宠物正在玩球

my_pet.py

from pet import Petmy_little_dog=Pet("Doggy","dog")my_little_dog.drink_water()

第一行:从pet.py 导入Pet类,使用from 文件名 import 类名

第二行:实例化Pet() 类传入两个实参

第三行:通过实例化的对象调用Pet的drink_water()的方法。

看看执行结果:

5f52b1aafb8d60fc4141eb639043bd00.png

e65665bd3e7007e516fa8edfaa980dfd.png

从一个模块导入多个类

      如果我们希望调入其他模块内的多个类,python也给我们提供了方法

pet_second.py:

class Pet():    def __init__(self,name,ptype):    #初始化 name和 ptype属性        self.name=name         self.ptype=ptype    def drink_water(self):    #定义一个喝水的方法        print("My pet is a "+self.ptype+",it called "+self.name.title()+";Now it is drinking")    def play_ball(self):    #定义一个打球的方法        print(self.name.title()+" is playing ball")class Tail():    def __init__(self,tail_length="long"):        self.tail_length=tail_length    def shake_tail(self):        print("the pet has a " +self.tail_length+"; it is shaking tail , it shows it likes you!")class Dog(Pet):    def __init__(self,name,ptype):        super().__init__(name,ptype)        self.age=5        self.tail=Tail()    def sit_down(self):        print(self.name+" is now sitting!")    def drink_water(self):        print("Now it is drinking")

my_se_pet.py

from pet_second import Pet ,Tailmy_little_pet=Pet("goofy","dog")my_little_pet.drink_water()my_big_pet=Tail()my_big_pet.shake_tail()

第一行:从my_se_pet.py 导入Pet、Tail,使用from 文件名 import 类名

第二行:实例化Pet() 类传入两个实参"goofy","dog"

第三行:通过实例化的对象调用Pet的drink_water()的方法。

第四行:实例化Tail() 类

第五行:通过实例化的对象调用Tail的shake_tail()的方法。

看看打印结果:

6411f9608d1494e42d0560abae80ef58.png

62eca3e2c542f9d3917538be3644b226.png

导入整个模块

pet_second.py:

class Pet():    def __init__(self,name,ptype):    #初始化 name和 ptype属性        self.name=name         self.ptype=ptype    def drink_water(self):    #定义一个喝水的方法        print("My pet is a "+self.ptype+",it called "+self.name.title()+";Now it is drinking")    def play_ball(self):    #定义一个打球的方法        print(self.name.title()+" is playing ball")class Tail():    def __init__(self,tail_length="long"):        self.tail_length=tail_length    def shake_tail(self):        print("the pet has a " +self.tail_length+"; it is shaking tail , it shows it likes you!")class Dog(Pet):    def __init__(self,name,ptype):        super().__init__(name,ptype)        self.age=5        self.tail=Tail()    def sit_down(self):        print(self.name+" is now sitting!")    def drink_water(self):        print("Now it is drinking")

my_th_pet.py

import pet_secondmy_cat=pet_second.Pet("Kitty","Cat")my_cat.play_ball()

第一行:从my_se_pet.py 导入整个模块

第二行:实例化Pet() 类传入两个实参"Kitty","Cat"

第三行:通过实例化的对象调用Pet的play_ball()的方法。

看看执行结果:

58422425eada0ead0b52f1684141a1f7.png

d0702250167c5e23748a20870a0ebaf5.png

上期答案与本期习题

1.定义一个父类Car ,Car中初始化函数有一个属性是car_type,另一个属性是car_year. Car中还有一个方法,该方法名成为oil_consume . 该方法打印car_type +"oil consume is high" . 再创建一个子类,子类继承父类属性和方法,实例化子类,并用这个实例化对象调用父类中的属性并打印,并且调用父类中的oil_consume方法

class Car():    def __init__(self,car_type,car_year):        self.car_type=car_type        self.car_year=car_year    def oil_consume(self):        print(self.car_type + " oil consume is high")class Suv(Car):    def __init__(self,car_type,car_year):        super().__init__(car_type,car_year)my_SUV=Suv("Big","2018")my_SUV.oil_consume()

执行情况:

022d6958d0c74177cd06b1015af75408.png

本期习题:

1.定义一个类,并将类存储在一个模块中,从另一个模块中导入这个类,并实例化这个类,通过实例化对象调用这个类中的方法

更多免费资料,请关注公众号

f6e2ce8f5004e16a1f0b1b82a43544e7.gif

725afcebda87e82bb00721e59a7da233.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值