python-面向对象2,,1、知识点类变量:类
python-面向对象2,,1、知识点类变量:类
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 @classmethod14 def butie(cls):15 print("大家都发500的补贴")16 17 @classmethod18 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_no25 self.position = position26 self.salary = salary27 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) #结果:China39 #40 # # 类方法41 # Staff.help();42 43 Staff.haha()44 45 # Staff.nationality = ‘Japan‘46 #47 # # 实例化148 # lzh = Staff(‘lzh‘,1,‘101‘,1200)49 # lzh.my_self() # 结果:my name is lzh,I‘m from Japan50 #51 # lzh.nationality = ‘USA‘52 # lzh.my_self() #结果:my name is lzh,I‘m from USA53 #54 #55 # # 实例化256 # 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 = 152886023810 11 result = (time.time()-create_time)/(365*24*60*60)12 13 return round(result,1)14 15 #静态方法16 #不能调用类里面的方法(实例方法、类方法)17 #类里面的方法可以调用静态方法18 @staticmethod19 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 pass44 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
评论关闭