PYTHON奇幻冒险记21 客官别走,给你介绍个对象
PYTHON这门语言的精髓就在这里!客官,先别走,10分钟,让你学会PYTHON!
第21课 客观别走,给你介绍个对象
不文艺,不人生
每天十分钟,爱上PYTHON!
文章目录
前言
通过上一节课的内容所学,我们已经对面向对象有了初步的理解,现在我们就应用一个小例子,再加深一下我们的理解!
一、Who am I?
代码如下,很简单!
class LONG_ZHI_ZI:
def __init__(self,nationality,region):
self.nationality = nationality
self.region = region
print('个人信息正在录入中……')
def born(self):
print('龙之子生在%s。'%(self.nationality))
def live(self):
print('龙之子在%s。'%(self.region))
# 接下来新建方法,调用上面的两个方法(注:方法名可自定义)。
def life(self):
self.born()
self.live()
tommi_wei = LONG_ZHI_ZI('CHINA', 'NANJING')
tommi_wei.life()
# 调用方法后,程序运行方法中的代码(即依次调用方法`born`和`live`)。
tommi_wei.born()
tommi_wei.live()
大家有兴趣的话,可以自己跑一下代码!看看结果和你想的是不是一样!
这个仅仅只是给大家开开胃,下面的程序更加有趣!
现在我们要创造一个机器人,T800,希望他可以一起与我们奇幻冒险~
class T_800:
def __init__(self):
self.robot_name = input('MASTER你好。我来自另一个星球,你能告诉我叫什么名字?')
self.master = input('我叫小鹏鹏,你可以叫我任何你想叫的名字')
print('你好%s,我叫%s。很开心,遇见你~'%(self.master,self.robot_name))
def say_wish(self):
wish = input('说说你让我来地球的目的吧:')
print(self.master+'的目的是:')
# 这里也可以用字符串的格式化,不过,用循环语句的话,之后改复述次数会方便些。
for i in range(3):
print(wish)
Arnold_Schwarzenegger = T_800()
Arnold_Schwarzenegger.say_wish()
运行结果如下:
MASTER你好。我来自另一个星球,你能告诉我叫什么名字?terminator
我叫小鹏鹏,你可以叫我任何你想叫的名字Tommi_Wei
你好Tommi_Wei,我叫terminator。很开心,遇见你~
说说你让我来地球的目的吧:PYTHON World, i am back!
Tommi_Wei的目的是:
PYTHON奇 World, i am back!
PYTHON奇 World, i am back!
PYTHON奇 World, i am back!
二、类的继承和定制
1.继承家业?
你除了继承家里的十几套房,50多亩地,几座煤矿之外,还有啥?还有啥?所以,你除了成功,别无选择!
好了,言归正传,现在讲一下什么是继承,这可不是继承家族的财产啊。哈哈。
如果说你的国外朋友问你台湾人和中国人有什么关系?你怎么回答?
小鹏鹏会说,台湾是中国不可分割的一部分领土。出生在那里的人就叫做台湾人,出生在北京的人就叫做北京人。但是归根结底,他们都是中国人!
对啦!这就是继承,明白了这句话,继承你也学会了。大家都用筷子吃饭,大家说的都是中国话,等等,这些就是中国人有的属性!
为了让你更清楚的明白这个概念,小鹏鹏今天也是拼了!
台湾人属于中国人,说明中国人这个 概念包裹了台湾人,台湾人拥有的特性,同样中国人也拥有!在PYTHON的世界里面,就是台湾人继承了中国人的属性和方法。毕竟台湾人只是一个子集,还有北京人,天津人,湖南人,等等。
现在用类讲的话,就是说,台湾人是子类,中国人是父类。
2. 定制衣服?
这是要去商场给自己定制衣服吗?哈哈,不着急,我们接着学习!
台湾人既然拥有和中国人一样的黑头发,黄皮肤的属性,说中国话的方法。当然台湾人也有自己的独有特产,台湾凤梨。(假设大陆没有)这个就是我们所说的定制。
当我们明白了上述的概念的时候,我们就可以尝试着写代码,想想应该怎么写?
三、类的继承代码实现
1. 基本语法
先让大家感受一下继承的语法格式吧!
class A(B):
其中A是子类名,B是父类名!注意大家一定要用中文格式!话不多说,我们直接看看代码!
class Chinese:
eye = 'black'
speak = 'zhong_guo_hua'
def eat(self):
print('吃饭,选择用筷子。')
class Taiwanren():
pass # pass表示'跳过',不执行其他操作
JAY=Chinese()
print(JAY.speak)
JAY.eat()
运行结果如下:
zhong_guo_hua
吃饭,选择用筷子。
2. 多层继承
中国人也是亚洲人,对吧,亚洲人也是地球人,对吧,地球人也是由高级动物演化而来,对吧。
说了这么多,其实就是想让大家明白其中的道理。只要你愿意,还可以继续往上扩展!
class Earth_man:
eye_number = 2
# 中国人继承了地球人
class Chinese(Earth_man):
eye_color = 'black'
# 台湾人继承了中国人,同时也继承了地球人。
class TAIWANREN(Chinese):
say = 'zhong_guo_hua'
JAY = TAIWANREN()
print(JAY.eye_number)
print(JAY.eye_color)
运行结果如下:
2
black
3. 多重继承
今天,我们就把继承搞清楚了!
当然,我们说一个人,也可以是多个国家的混血人,爸爸是中国人,妈妈是美国人。
给大家举个例子!
class BABA:
born_city = 'CHINA'
EATING = 'noodles'
def diet(self):
print('我们爱吃米饭。')
class MAMA:
settle_city = 'Amercia'
EATING = 'bread'
def diet(self):
print('我们爱吃甜食。')
class MABA(BABA,MAMA):
pass
tommi_wei = MABA()
print(tommi_wei.settle_city)
print(tommi_wei.born_city)
# 方法调用,和属性调用一样,也符合就近原则。
tommi_wei.diet()
运行结果如下:
Amercia
CHINA
我们爱吃米饭。
四、类的定制代码实现
1. 定制,可以新增代码
大家仔细看一下代码,发现没有发现,类的定制在哪里?
class Chinese:
eye = 'black'
speak = 'zhong_guo_hua'
def eat(self):
print('吃饭,选择用筷子。')
class Taiwanren(Chinese):
born = 'TAIWAN'
def fruits(self):
print('这里特产水果')
JAY=Taiwanren()
print(JAY.speak)
print(JAY.born)
JAY.eat()
JAY.fruits()
运行结果
zhong_guo_hua
TAIWAN
吃饭,选择用筷子。
这里特产水果
2. 定制,也可以重写
class CHINA:
def land_area(self,area):
print('台湾省占中国陆地面积是%d万平方公里左右。' % area)
class TAIWAN(CHINA):
# 为参数 area 设置默认值。
def land_area(self, area = 960, rate = 0.00375):
CHINA.land_area(self, area * rate)
taiwanren = TAIWAN()
taiwanren.land_area()
# 两个参数都有默认值,所以可以这么调用。
运行结果
台湾省占中国陆地面积是3万平方公里左右。
注意细节!子类继承父类方法的操作是在def语句后接父类.方法(参数)。
BOSS来袭
1. 爱的教育
为了加深大家的理解,再来2个BOSS给大家开开胃!
爸爸是一个严肃的人,妈码是一个慈爱的人
class FATHER:
face = 'serious'
job = 'ENGINEER'
class MOTHER:
face = 'sweet'
parenthood = 'MOM'
class MotherMore(MOTHER, FATHER):
pass
class FatherMore(FATHER, MOTHER):
face = 'gentle'
FACE3 = MotherMore()
FACE4 = FatherMore()
print(FACE3.face)
print(FACE4.face)
运行结果:
sweet
gentle
2. 学习效率
class xuexixiaolv:
def __init__(self, name, work=None, time=0.00, time_effective=0.00):
self.name = name
self.work = work
self.time = time
self.time_effective = time_effective
def count_time(self, hour, rate):
self.time += hour
self.time_effective = hour * rate
class COMPUTER(xuexixiaolv):
def __init__(self, name):
xuexixiaolv.__init__(self, name, work='MATH', time=0.00, time_effective=0.00)
def count_time(self, hour, rate=1):
xuexixiaolv.count_time(self, hour, rate)
TEST1 = xuexixiaolv('BAN')
TEST2 = COMPUTER('LISA')
print(TEST1.work)
print(TEST2.work)
TEST1.count_time(10, 0.8)
TEST2.count_time(10)
print(TEST1.time_effective )
print(TEST2.time_effective )
运行结果
None
MATH
8.0
10
今天的学习就到这里,下期我们再见!希望本节的内容对你有帮助!
欢迎大家订阅我的《人性的弱点》,给你一种不一样的感觉!