今天我们来讲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。我们下期再见!