天池python训练营Day08


面向对象编程是最有效的软件编写方法之一,而类具备这种灵活性.
面向过程编程,看重的是解决问题的过程。
面向过程: 编程主要用到的是“函数”知识,将每个过程步骤打包成函数,再依次调用

创建类
类名一般首字母要大写

// A code block

# 语法:创建一个名为“ClassName”的类,类名一般首字母要大写,(): 不能丢   
class ClassName():
# 如定义一个名为'狗'的类,可以写成class Dog():
    # 规范:class语句后续的代码块要缩进  
    def function1():
    # 定义类中的函数1
    
var foo = 'bar';

既然【类】是一个函数包,所以一个类中可以放置一堆函数

// A code block

class Lucky():
    def tuple0(self):                    #self用于关联类与函数间的联系,self的取值不是唯一的,你也可以取name这种,但是在python界几乎默认self,所以为了规范化还是用self
        print('时光易逝,年华不再')

    def set0(self):
        print('越努力越幸运')

    def kay0(self):
        print('越难的事,越有意义')

    def conten(self):
        print('时光易逝,只争朝夕')


k=Lucky()     #启动类需要实例化,这就是也self关联到的,有self才能实例化
k.tuple0()
k.set0()
k.kay0()
k.conten()

var foo = 'bar';
// An highlighted block

时光易逝,年华不再
越努力越幸运
越难的事,越有意义
时光易逝,只争朝夕

var foo = 'bar';

继承:子类自动共享父类之间数据和方法的机制

// A code block

class MyList(list):
    
    pass      #表示什么也不干

lst = MyList([1,5,2,7,8])
lst.append(9)
lst.sort()     #sort()函数表示对列表进行排列
print(lst)

var foo = 'bar';
// An highlighted block

[1, 2, 5, 7, 8, 9]

var foo = 'bar';

多态:不同对象对同一方法响应不同的行动

// A code block

class Animal:
    def run(self):         #同过run的实例化控制下面的子类
        raise AttributeError('子类必须实现这个方法')


class People(Animal):
    def run(self):
        print('人正在走')


class Pig(Animal):
    def run(self):
        print('pig is walking')


class Dog(Animal):
    def run(self):
        print('dog is running')


def func(animal):
    animal.run()


func(Pig())
# pig is walking

var foo = 'bar';
// An highlighted block

 pig is walking
 
var foo = 'bar';

类的方法与普通的函数只有一个特别的区别 —— 它们必须有一个额外的第一个参数名称(对应于该实例,即该对象本身),按照惯例它的名称是 self。在调用方法时,我们无需明确提供与参数 self 相对应的参数

// A code block

class Ball:
    def setName(self, name):
        self.name = name

    def kick(self):
        print("我叫%s,该死的,谁踢我..." % self.name)


a = Ball()
a.setName("球A")

b=Ball()
name=input('可用input函数设置手动输入:')
b.setName(name)
a.kick()
b.kick()

var foo = 'bar';
// An highlighted block

我叫球A,该死的,谁踢我...
我叫李海,该死的,谁踢我...

var foo = 'bar';

Python 的魔法方法
据说,Python 的对象天生拥有一些神奇的方法,它们是面向对象的 Python 的一切…

它们是可以给你的类增加魔力的特殊方法…

如果你的对象实现了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,而这一切都是自动发生的…

类有一个名为__init__(self[, param1, param2…])的魔法方法,该方法在类实例化时会自动调用。

// A code block

class Ball:
    def __init__(self, name):
        self.name = name

    def kick(self):
        print("我叫%s,该死的,谁踢我..." % self.name)
    
    def lucky(self):
        print("我叫%s,该死的,谁踢我..." % self.name)    #可设置多个,灵活应用

a = Ball("球A")
b = Ball("球B")

a.kick()
# 我叫球A,该死的,谁踢我...
b.lucky()
# 我叫球B,该死的,谁踢我...
var foo = 'bar';
// An highlighted block

我叫球A,该死的,谁踢我...
我叫球B,该死的,谁踢我...

var foo = 'bar';

继承
编写类时,不一定需要从新开始写。如果你要编写两个类时,数据之间可以互相用,可以使用继承。一个类继承另一个类时,他将自动获得另一个类的属性和方法,原有的称为父类,新的称为子类。子类继承父类的所有属性和方法,同时还可以定义自己的属性和方法.

// A code block

class 基础机器人():
    def __init__(self,参数):
        self.姓名 = 参数

    def 自报姓名(self):
        print('我是' + self.姓名 + '!')     

    def 卖萌(self):
        print('主人,求抱抱!')

class 高级机器人(基础机器人):
    def 自报姓名(self):
        print('我是高级机器人' + self.姓名 + '!')

    def 卖萌(self):
        print('主人,每次想到怎么欺负你的时候,就感觉自己全身biubiubiu散发着智慧的光芒!')

#1
安迪=基础机器人('安迪')
安迪.自报姓名()
安迪.卖萌()
#2
安迪 = 高级机器人('安迪')            #同一数据的不同应用
安迪.自报姓名()
安迪.卖萌()

var foo = 'bar';
// An highlighted block

#1
我是安迪!
主人,求抱抱!

#2
我是高级机器人安迪!
主人,每次想到怎么欺负你的时候,就感觉自己全身biubiubiu散发着智慧的光芒!

var foo = 'bar';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值