# __*__ coding: utf-8 __*__# __author__ = "David.z"# dict ={#     1:{"name":"alex",#        "role":"terrorist",#        "weapon":"C33",#        "life_value":"100",#        "money":15000,},#     1:{"name":"alex",#        "role":"terrorist",#        "weapon":"C33",#        "life_value":"100",#        "money":15000,},#     2:{"name":"tom",#        "role":"terrorist",#        "weapon":"B25",#        "life_value":"100",#        "money":15000,},#     3:{"name":"jack",#        "role":"police",#        "weapon":"B51",#        "life_value":"100",#        "money":15000,},#     4:{"name":"lily",#        "role":"police",#        "weapon":"G31",#        "life_value":"100",#        "money":15000,},# }# print(dict[1])# print(dict[2])# print(dict[3])# print(dict[4])class Role(object):    n=123n_list=[]    def __init__(self,name,role,weapon,life_value=100,money=15000):        #构造函数        #在实例化时做一些类的初始化的工作        self.name = name        self.role = role        self.weapon = weapon        self.__life_value = life_value#这个是一个私有属性,如果要调用,需要在里面在加一个方法调用,如def show_status()                self.money = money    def __del__(self):        pass        #print("%s彻底死了。。。"%self.name)    def show_status(self): #这里就是我在调用私有属性,同理,如果要用私有方法,也是加__        print("name:%s weapon:%s life_value:%s"%(self.name,                                                     self.weapon,                                                     self.__life_value                                                 ))return "hello"def shot(self):        print("%s shooting..."%self.name)    def got_shot(self):        print("ah...,%s got shot..."%self.name)    def buy_gun(self,gun_name):        print("%s just bought %s"%(self.name,gun_name))r1 = Role('Alex',"police",'AK47') #实例化,(初始化一个类,造了一个对象)r1.n="r1变量改了"r1.n_list.append("r1添加")r2 = Role('Jack',"terrorist",'B22') #生成一个角色r2.n="r2变量改了"Role.n = "类变量改了"r2.n_list.append("r2添加")print(r1.show_status())# print(Role.n,r1.got_shot(),r1.n)# print("类:",Role.n_list)# print("r1:",r1.n_list)# print("r2:",r2.n_list)# print(Role.n,r2.buy_gun("狙击"),r2.n)

今天开始学习面向对象和面向过程的两种编程方式。

其实我们之前开始写的脚本类的编程,都可以叫做面向对象的编程。

那么什么面向对象,借用Alex的话,世间万物都有是有类可以分的。这里我们就引出了类。

面向对象包括:对象、封装、继承、多态的特性。

类里面我们说有对象和实例化。还包括构造函数和析构函数。

构造函数: def __init__(self):

析构函数: def __del__(self):

 

然后讲到了类的继承。

比如有一个父类People ,两个子类,一个Man ,一个Women。

我们说子类可以调用父类里的方法,当子类和父类的方法有同名时,也可以可以通过

把父类的方法先传进去。

但是两个子类直接的方法的是不可以调用的。

 1 # __*__ coding: utf-8 __*__ 2 # __author__ = "David.z" 3 class People: 4     def __init__(self,name,age): 5         self.name = name 6         self.age = age 7     def eat(self): 8         print("%s is eating..."%self.name) 9     def sleep(self):10         print("%s is sleeping..."%self.name)11     def talk(self):12         print("%s is talking..."%self.name)13 14 class Man(People): #继承父类15     def piao(self):16         print("%s is piaoing......20s....done"%self.name)17 18     def sleep(self):19         People.sleep(self) #把父类方法线传进去20         print("子类man is sleeping")21 22 class Woman(People):23     def get_birth(self):24         print("%s is born a baby..."%self.name)25 m1 = Man("ZhangSan",22)26 m1.eat()27 m1.sleep()28 m1.piao()29 w1 = Woman("ChenRonghua",26)30 w1.get_birth()

View Code

 其实这种是单继承,还有多继承,就是继承2个类或者多个类。

如代码

 1 # __*__ coding: utf-8 __*__ 2 # __author__ = "David.z" 3 # class People:#经典类 4  5 class People(object):#新式类 6  7     def __init__(self,name,age): 8         self.name = name 9         self.age = age10     def eat(self):11         print("%s is eating..."%self.name)12     def sleep(self):13         print("%s is sleeping..."%self.name)14     def talk(self):15         print("%s is talking..."%self.name)16 17 class Relation(object):18     def __init__(self):19         print (self.name)20 21     friends = []22     def make_friends(self,obj):23         print("%s is making friends with %s "%(self.name,obj.name))24         self.friends.append(obj)25 26 class Man(People,Relation): #继承父类27     # def __init__(self,name,age,money):28     #     # People.__init__(self,name,age)29     #     super(Man, self).__init__(name,age)#继承父类的,可以上面那样写,也可以这样写,新式类写法30     #     self.money = money31     #     print ("%s 一出生就有%s 元钱"%(self.name,self.money))32     def piao(self):33         print("%s is piaoing......20s....done"%self.name)34 35     def sleep(self):36         People.sleep(self) #把父类方法线传进去37         print("子类man is sleeping")38 39 class Woman(People,Relation):40     def get_birth(self):41         print("%s is born a baby..."%self.name)42 m1 = Man("ZhangSan",22)43 # m1.eat()44 #45 # m1.sleep()46 # m1.piao()47 48 w1 = Woman("ChenRonghua",26)49 w1.get_birth()50 m1.make_friends(w1)51 w1.name = "陈三炮"52 print(m1.friends[0].name)

View Code

 

这里说一下py2和py3还有新式类和经典类的继承方式。

里面包含两个概念,广度优先和深度优先。

默认py3里面经典类和新式类都是广度优先的方式。

而py2里面经典类是深度优先,新式类才是广度优先。

如图。

 1 class A(object):#现在是py3,也可以变成新式类加object 2     def __init__(self): 3         print("A") 4 class B(A): 5     pass 6     # def __init__(self): 7     #     print("B") 8 class C(A): 9     # pass10     def __init__(self):11         print("C")12 class D(B,C):13     pass14     # def __init__(self):15     #     print("D")16 17 obj = A()18 obj = B()19 obj = C()20 obj = D()

 

©著作权归作者所有:来自51CTO博客作者天天打老虎的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. python之类的继承
  2. 面试题:为什么Java中的Collection类都继承了抽象类还要实现抽象类
  3. Python工程师需要掌握的面试题
  4. 社区版本idea查看继承关系的骚操作
  5. 子类初始化父类的二种方法
  6. Java原子类实现原理分析
  7. JavaScript初学习之构造函数、类与继承、获取dom元素、dom元素的
  8. 第8章 0203-静态绑定,接口与抽象类,学习心得、笔记(抽象类、继承、
  9. 当模板方法遇到了委托函数,你的代码又可以精简了

随机推荐

  1. 操作系统面试题汇总(找工作必备)
  2. 使用Android中sqlite表的全文检索
  3. Babel快速指南
  4. [Android]笔记10-单选按钮和复选框的功能
  5. Android在标准linux基础上对休眠唤醒的实
  6. ES2016
  7. Android(安卓)使用Post方式提交数据
  8. Android(安卓)如何建立AIDL
  9. 包装模式就是这么简单啦
  10. Intent妙用之编写自己的android主界面