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

评论关闭