代码改变世界

2018.3.22学习笔记(面向对象)

2018-03-24 17:05  冒牌权限  阅读(83)  评论(0)    收藏  举报

类class可以用来封装对象

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#一个初始化小实验,save类似存档
class fengzhuang:

    def __init__(self,ren,gong,fang,xue):#封装参数
        self.ren = ren
        self.gong = gong
        self.fang = fang
        self.xue = xue

    def xianshi(self):
        print('人物:%s'% self.ren)
        print('攻击力:%d'% self.gong)
        print('防御力:%d' % self.fang)
        print('气血:%d' % self.xue)


import pickle

obj1 = fengzhuang('日天哥',100,100,1000)#即创建对象,又给参数赋值,初始化
pickle.dump(obj1,open('save.log','wb'))

save = pickle.load(open('save.log','rb'))

if save:
    save.xianshi()
else:
    obj2 = fengzhuang('傲天哥',99,99,999)
    obj2.xianshi()
    pickle.dump(obj2, open('save.log', 'wb'))

继承

#!/usr/bin/env python
# -*- coding:utf-8 -*-

class Animals:#父类也叫基类

    def chi(self):
        print(self.name + '')

    def he(self):
        print(self.name + '')

    def xiangtong(self):#测试基类和派生类具有相同方法时的情况
        print('相同方法,基类')

class Cat(Animals):#继承,子类也叫派生类
    def __init__(self,name):
        self.name = name

    def jiao(self):
        print('')

    def xiangtong(self):#测试基类和派生类具有相同方法时的情况
        print('相同方法,派生类')

class Dog(Animals):#继承,子类也叫派生类
    def __init__(self,name):
        self.name = name

    def jiao(self):
        print('')

wumiaowang = Cat('呜喵王')
xiaobai = Dog('小白')
xiaobai.chi()
xiaobai.jiao()
wumiaowang.he()
wumiaowang.xiangtong()#可以看到优先派生类

高级继承,python可以同时继承多个类(python独有,Java/C#等语言无法同时继承多各类)

#!/usr/bin/env python
# -*- coding:utf-8 -*-

class fat1:#基类一

    def func(self):
        print('基类一')

class fat2:#基类二

    def func(self):
        print('基类二')

class paisheng(fat1,fat2):#高级继承,同时继承多个基类

    def func_ps(self):
        pass

obj = paisheng()
obj.func()#可以看到两个基类都具有func方法,优先级为左到右