Python面向对象编程

今天我们来讲Python的面向对象编程:

常用的编程方式有两种:

面向过程(C)
面向对象(Java,C++,Python)

在这里插入图片描述

这个就是面向对象的一个例子。比如有一个类叫人类,然后人类里面有属性,比如有眼睛鼻子,然后也有方法,比如可以画画,踢足球。现在我们依靠人的好和坏来再分两个类。这两个类有共同的属性与方法,所以都在人类的分支下。然后好人类里面又有不同的,比如有女的,有男的,现在我们依靠中国人与外国人来分,又分为中国人类与外国人类,中国人类里又有…就这样可以一直分下去。这种就叫派生子类。

首先讲类:
类是对具有相同属性和方法的一组对象的描述或定义。

class 类的名称():
“”” 类的说明文档 “””
def init(self,…):
pass

pass语句表示后面暂时没有更多信息,可以在后续的编程中完善

init()是一种特殊的方法,当根据类创建对象时,python会自运行它。

类的说明文档:对该类进行文字说明,让读者可以快速获知该类的作用。类似于注释的功能,但是注释是注释程序,这个说明文档是相当于注释这个类。

我们举个例子:

class Computer():
    def __init__(self,make,year):
        self.make = make
        self.year = year
    def count_price(self):
        count_year = 2020 - self.year
        price = 30000 - count_year * 500

        say = '您的这个{}电脑已经用了{}年了,价值为{}'.format(self.make,count_year,price)

        return say

my_computer = Computer('华为',2011)
print(my_computer.count_price())

大家看到这一大串代码了吧。是不是看起来很复杂,不用怕,我们一句一句分析。

这个类的作用就是估算一个电脑卖出去可以卖多少钱。只需要输入品牌名与买的时候的年份即可。当然这个算法是我乱编的,主要是看结构。

首先我们用class关键字创建Computer这样一个类,然后定义两个参数make和year,然后给属性指定默认值:

self.属性名 = 默认值

如果需要修改值吗,则:
对象的名称.属性名 = 修改值

然后我们创建一个count_price的方法,作用是估算价格。定义两个变量,这个没问题。然后就是返回字符串。

之后调用,这个调用就是先将类赋值给一个叫my_computer的变量,注意,赋值的时候因为有两个参数需要传递,所以在调用类的时候需要传递参数。然后用这个变量进行调用类的方法。

好了,接下来我们讲继承。

当编写的类是另一个现成类的特殊版本,可使用继承。原来的类称为父类,而新的类称为子类。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法。

class 父类名():
def init(self,参数1,…):

def …

class 子类名(父类名):
def init(self,参数1,…):
super().init(…)

def …

好了,现在我们来举个例子。
就拿刚刚那个来说,假如我们有另一种手机的算法,那手机的属性与电脑也一样(打个比方),那么我们不想再重写一个类,否则会很麻烦,那我们就可以使用继承:

class Computer():
    def __init__(self,make,year):
        self.make = make
        self.year = year
    def count_price(self):
        count_year = 2020 - self.year
        price = 30000 - count_year * 500

        say = '您的这个{}电脑已经用了{}年了,价值为{}'.format(self.make,count_year,price)

        return say


class Phone(Computer):
    def __init__(self,make,year):
        super().__init__(make,year)

    def count_price(self):
        count_year = 2020 - self.year
        price = 20000 - count_year * 500

        say = '您的这个{}手机已经用了{}年了,价值为{}'.format(self.make,count_year,price)

        return say

my_phone = Phone('苹果',2011)
print(my_phone.count_price())

首先我们继承了Computer类的两个属性,然后修改了一下算法,再把字符串的内容改成了手机,然后就行了。这看起来没节约多少,因为这才一个方法,当有多个方法的时候,如果你想修改一个方法,其它都想要。那么就全部方法继承,而只用修改一个。如果你重写,就要把全部方法重写一遍。

好了以上就是今天的知识,希望大家记住,这是基础中的基础。创作不易,大家至少关注一下吧。有疑惑的朋友在评论区询问,我会尽力而答。感兴趣的小伙伴,可以加我QQ:3418772261。我们下期再见!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值