PYTHON奇幻冒险记21 客官别走,给你介绍个对象

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

今天的学习就到这里,下期我们再见!希望本节的内容对你有帮助!
欢迎大家订阅我的《人性的弱点》,给你一种不一样的感觉!

猜你喜欢

转载自blog.csdn.net/weixin_46259642/article/details/114942038