【笔记】15-112-APEA Python OOP 面向对象

Python|计算机 ComputerScience

   
   

@ZYX 写于2018年07月30日

class Flower():

def __init__(self,color,petals,size):

self.color=color

self.petals=petals

self.size=size

flower = Flower(“red”, 5, 7)

flower.color=”pink”

print(isinstance(flower,Flower))

  1. 构造器  def __init__(self,color,isHappy):                                                                          (self就是对象本身。self不用在使用方法中设置,但是每个构造器的第一个形式参数都必须是self
  2. def __eq__(self,other)进行对象比较,而不是”==”                                                                      0 if not isinstance(other, Flower):   return False                                                                         else: return( self.color==other.color and self.petals==other.petals and\                                                 self.size==other.size)
  3. def __str__(self) 进行对象的字符串设置                                                                                           return “Flower with %d petals and %s” (self.petals, self.color)                                   如果没有的话,打印flower1时,会输出flower1的地址。
  4. flowerLst=[]                                                                                                                                    flowerLst.append(flower1)                                                                                                            flowerLst.append(flower2)                                                                                                           for i in flowerLst: print(i) 打印__str__的结果
  5. 但是print(flowerLst)会输出地址,如果这样的话,必须要写__repr__方法
  6. 如果要把对象加入到set中,就必须重写__hash__
  7. def __hash__(self):                                                                                                                              return hash(self.size, self.petals, self.color) #这些属性都必须不可微变
  8. Python的继承

class VenusFlyTrap(Flower): #()内是父类,如果没有,                         def __init__(self,color,petals,size) :       #就填object                                 super().__init__(color,petals,size) #引用父类构造器
self.color=”Red”   #也可以进行一定改动

def water(self):  grow(500)   #重写父类方法

#Python只会在该类中没有定义所需方法时,才去父类中寻找,而且,如果该类中重写过父类的方法,并且该方法被在引用的方法中被引用,那么执行重写过的方法。

比如说子类中重写grow(),但是没有water(),父类有water(),和原来的grow()。此时 子类.water()会调用父类的water(),但water()会调用子类grow而不是父类grow,就相当于把父类的方法复制进子类。