Python之面向对象

Posted 瑶池里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之面向对象相关的知识,希望对你有一定的参考价值。

面向对象:

 ~Python是一门面向对象的语言。类(class)是一种抽象的模板,实例(instance)是根据类创建的具体对象,每个对象都有相同的方法,只不过传入的数据可能不一样。

~类里面一般包含属性和方法,你可以简单的理解为属性为静态的,方法为动态的。比如class person:这个类手、脚、眼睛这些为属性,而走路、看书等为方法。

~由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把各~种属性绑上去

~而__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。

 

•创建 

创建一个person的类:

1 class person:
2     def __init__(self,name,weight,hight,country):
3         self.name=name
4         self.weight=weight
5         self.hight=hight
6         self.country=country

 

传入一个实例

1 a=person("y",179,180,"china")
1 a.country#获取person中country这个属性
china


创建一个默认属性
1 class person:
2     country="china"#shared by all instance
3     def __init__(self,name,weight,hight):
4         self.name=name
5         self.weight=weight
6         self.hight=hight
1 a=person("y",179,180)
1 a.country
‘china‘

 亦或写成

1 class person:
2     def __init__(self,name,weight,hight):
3         self.name=name
4         self.weight=weight
5         self.hight=hight
6         self.country="china"

 

创建一个既有属性又有方法的类

 1 class person:
 2     def __init__(self,name,weight,hight):
 3         self.name=name
 4         self.weight=weight
 5         self.hight=hight
 6         self.country="china"
 7     def judge_weight(self,weight):
 8         if weight>160:
 9             print("超重")
10         elif weight>120:
11             print("标准")
12         else:
13             print("偏瘦")
1 a=person("y",179,180)
1 a.judge_weight(110)
偏瘦



 

•继承

一个类继承另一个类时,它将自动获得另一个类的属性和方法;原有的类称为父类,而新的类称为子类。

1 class huge(person):
2     pass#完全继承

 

1 a=huge("y",179,180)
2 a.name
‘y‘

 

 

 

 

多态

子类继承了其父类的所有属性和方法,同时也可以定义自己的属性和方法。

 

用super().__init__去初始化父类super()将返回当前类继承的父类,__init__初始化方法。

1 class huge(person):
2     def __init__(self,name,weight,hight,skill):#写出子类的所有属性
3         super().__init__(name,weight,hight)#子类所继承的父类属性
4         self.skill=skill#子类自己的属性
5         pass
1 a=huge("y",179,180,"fly")
2 a.skill
‘fly‘


方法重载:当父类的方法不符合子类的需求时,可以重新定义一个方法,即它与重写的父类方法同名,即覆盖了父类的方法。
 1 class huge(person):
 2     def __init__(self,name,weight,hight,skill):#写出子类的所有属性
 3         super().__init__(name,weight,hight)#子类所继承的父类属性
 4         self.skill=skill#子类自己的属性
 5     def judge_weight(self,hight):
 6         if hight>180:
 7             print("")
 8         elif hight>170:
 9             print("")
10         else:
11             print("")
12         
1 a.judge_weight(170)
 

 

 

 

 

以上是关于Python之面向对象的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

PHP面向对象之选择工厂和更新工厂

python基础之面向对象

Python之面向对象:面向对象基础

python之面向对象编程一