首页 > temp > python入门教程 >
-
学习python第八天
注意几点:一定要自己敲代码,要注意类的大小写以及实例化时类的大小写,__init__ 属于函数。内部放的是属性不要放方法啥的,可以直接在其中添加新的属性,比如参数没有的。组合就是将别的类实例化在实例属性当中,由于是实例属性,所以是self
对象之间的关系:
组合关系:组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合。 有一堆组件构成一个完整的实体,组件本身独立但是又不能自己运行。必须跟宿主组合在一起才能运行。
比如人用棍子打狗。棍子就是一个组件,她不能自己独立运行,必须跟宿主组合一起才能完成人用棍子打狗这个行为。
class Dog: def __init__(self, name): self.name = name self.live = 100 class Weapon: def stick(self,obj): self.name = "打狗棒" self.attack = 10 obj.live -= self.attack print(obj.live) class Person: def __init__(self, name, sex): self.name = name self.sex = sex self.attack = 30 self.weapon = Weapon() #组合。在一个类中一另一个类的对象作为数据属性 dog1 = Dog("zangao") p = Person("jack", "M") p.weapon.stick(dog1)
面向对象继承:子类继承父类 继承父类的属性和方法。
继承与抽象,先抽象再继承
class Father:
def __init__(self,name,age):
self.name = name
self.age = age
def walk(self):
print("walking on the sun!")
class Son(Father): # 继承父类要在()中写出父类名
def run(self):
print("running on the road!")
def walk(self): #继承了父类的方法,可以直接更改父类的方法。属性同样可以直接更改。但是不管是方法还是属性,父类中的并没有更改,其他子类继承的仍然是原父类中的类和方法
print("change!")
p = Son("jack",12)
在不改变父类方法的同时,给父类的方法添加功能:
class Son(Father):
def eat(self):
Father.eat() #调用一下父类方法
print("……") #在不改变父类方法的情况下给父类方法添加功能。(父类方法并未改变,只在子类中改变)
给初始化属性添加新参数方式也是一样的:
class Father: def __init__(self,name,age): self.name = name self.age = age class Son(Father): def __init__(self,name,age,sex): Father.__init__(self,name,age) #调用一下父类方法 此为py2的写法,py3有新的写法了 super(Person,self).__init__(name,age) #此为py3中的写法,和py2中的写法作用相同 super().__init__(name,age) #第三种super的写法 self.sex = sex p = Son("jack",12,"male") print(p.sex)
多继承:继承多个父类。这玩意写出来太麻烦,但是却不是很难理解,我就不写了(主要就是懒的写了)。还需要了解一下C3算法。
最近好懒,没学多少东西
来源:https://www.cnblogs.com/xiaoyuheng/p/14614298.html