python-面向对象2
Posted tour8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-面向对象2相关的知识,希望对你有一定的参考价值。
1、知识点
- 类变量:类定义的时候,这个变量就定义好了
- 实例变量(成员变量)、实例方法(成员方法)
- 类方法:
- 用@classmethod修饰的方法
- 自带的方法,不用实例化就可以调用
- 是公共的方法,在实例方法里可随意调用
- 类方法里面不能调用实例方法、不能使用实例变量,可调用其他的类方法
- 属性方法:看起来像一个变量的函数
- 用@property修饰的方法
- 静态方法:一个和类没有关系的方法,只是写在类里面而已
- 用@staticmethod修饰的方法
- 继承
- 魔法方法
- 一个类里面有一些特殊作用的方法
- 类里面 __funname__ 都是魔法方法,有一些特殊作用
2、eg1:
1 class Staff: 2 ‘‘‘员工类‘‘‘ 3 4 nationality = ‘China‘ #类变量 5 6 #类方法 7 # 一些公共的方法,就用类方法 8 # 类方法里面不能调用实例方法、不能使用实例变量 9 @classmethod #装饰器,其实就是一个函数 10 def help(cls): # cls就是Staff(class) 11 print(‘这里的员工都是来自%s‘%cls.nationality) 12 13 @classmethod 14 def butie(cls): 15 print("大家都发500的补贴") 16 17 @classmethod 18 def haha(cls): 19 boss = cls("BOSS",1,‘老板办公室‘,1000000) 20 boss.get_salary() 21 22 def __init__(self,name,id_no,position,salary): 23 self.name = name # 实例变量、成员变量 24 self.id_no=id_no 25 self.position = position 26 self.salary = salary 27 28 def get_salary(self): # 实例方法、成员方法 29 print("%s这个月发了%s"%(self.name,self.salary)) 30 self.butie() 31 32 def my_self(self): 33 print("my name is %s,I‘m from %s"%(self.name,self.nationality)) 34 # 调用类方法 35 self.help(); 36 37 # #类变量 38 # print(Staff.nationality) #结果:China 39 # 40 # # 类方法 41 # Staff.help(); 42 43 Staff.haha() 44 45 # Staff.nationality = ‘Japan‘ 46 # 47 # # 实例化1 48 # lzh = Staff(‘lzh‘,1,‘101‘,1200) 49 # lzh.my_self() # 结果:my name is lzh,I‘m from Japan 50 # 51 # lzh.nationality = ‘USA‘ 52 # lzh.my_self() #结果:my name is lzh,I‘m from USA 53 # 54 # 55 # # 实例化2 56 # zsb = Staff(‘zsb‘,1,‘101‘,1200) 57 # zsb.my_self() #结果:my name is zsb,I‘m from Japan
eg2:
1 import time 2 3 class User: 4 # 属性方法 5 @property 6 def work_age(self): 7 self.help() 8 9 create_time = 1528860238 10 11 result = (time.time()-create_time)/(365*24*60*60) 12 13 return round(result,1) 14 15 #静态方法 16 #不能调用类里面的方法(实例方法、类方法) 17 #类里面的方法可以调用静态方法 18 @staticmethod 19 def help(): 20 print(‘我是帮助文档,这个类是用户类‘) 21 22 lzh = User() 23 # result = lzh.work_age() 24 # print(result) 25 26 # 调用属性方法 27 print(lzh.work_age)
3、继承
eg1:
1 class Lz: 2 country = ‘Beijing‘ 3 house = 8 4 money = 99999 5 6 def driver(self): 7 print(‘开车‘) 8 9 def cook(self): 10 print(‘做法‘) 11 12 def make_money(self): 13 print(‘挣钱‘) 14 15 16 class Lw: 17 def majiang(self): 18 print(‘majiang‘) 19 20 def maicai(self): 21 print(‘maicai‘) 22 23 24 class Car: 25 # 私有的变量和私有的方法,不能继承 26 __key = ‘车轱辘下‘ 27 def run(self): 28 print(self.__key) 29 print(‘Car里的run‘) 30 31 32 33 class bigCar(Car): 34 # 重写 35 def run(self): 36 print(‘bigCar里的run:拐弯跑‘) 37 def swim(self): 38 print(‘水上汽车‘) 39 40 41 #继承 42 class Xz(Lz,Lw): 43 pass 44 45 lzh = Xz() 46 lzh.make_money() 47 lzh.maicai()
eg2:super()
1 class Car: 2 def run(self): 3 print(‘run‘) 4 5 class BigCar(Car): 6 # 重写:直接覆盖 7 def run(self): 8 print(‘拐弯跑‘) 9 10 class SmallCar(Car): 11 # 重写:在原有功能上增加功能 12 def run(self): 13 #Car.run(self) 14 super().run() # 自动找到父类 15 print(‘充电‘) 16 17 18 car1 = SmallCar() 19 car1.run()
以上是关于python-面向对象2的主要内容,如果未能解决你的问题,请参考以下文章