2018-07-04-Python全栈开发day25-静态属性类方法静态方法以及组合
Posted 叶海宾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-07-04-Python全栈开发day25-静态属性类方法静态方法以及组合相关的知识,希望对你有一定的参考价值。
1.静态属性property
作用:改变类中方法的调用方式,不需要加括号,看起来和数据属性的调用方式相同
class Fangjian(): tag=‘888‘ def __init__(self,name,owner,wedth,length): self.name=name self.owner=owner self.wedth=wedth self.length=length @property def cal(self): return self.wedth*self.length p1=Fangjian(‘yehaibin‘,‘xuzheng‘,50,80) a=p1.cal#不需要括号
2.类方法 classmethod
作用:类中的函数属性可以使用类来直接调用,但是需要创建一个实例,这样实例和类就绑定到一块了,需要一种方式,来直接调用类中的方法
class Fangjian(): tag=‘888‘ def __init__(self,name,owner,wedth,length): self.name=name self.owner=owner self.wedth=wedth self.length=length @classmethod#只是给类用的,实例不要用 def class_method(cls): print(‘this is class`s method‘) Fangjian.class_method()
3.静态方法staticmethod
作用:类似于类的工具包,在方法中不含有类和实例的调用,只是实现一个功能而已,例如输出
class Fangjian(): tag=‘888‘ def __init__(self,name,owner,wedth,length): self.name=name self.owner=owner self.wedth=wedth self.length=lengt @staticmethod def test12(): print(‘this is a test staticmethod‘) p1=Fangjian(‘yehaibin‘,‘xuzheng‘,50,80) Fangjian.test12() p1.test12()#类和实例都可以直接调用并且使用
4.组合
最直观的感受就是认清楚,类的方法其实就是一个字典,然后在字典中进行取值
#自己做一个选课系统#组合
#目的:
class School():#定义学校类, def __init__(self,name,destin): self.name=name self.destin=destin class Course: def __init__(self,name,price,priod,school): self.name=name self.prine=price self.priod=priod self.school=school#这是将课程和学校进行关联 school1=School(‘sdau‘,‘shandong‘) school2=School(‘sdau2‘,‘shandong2‘) school3=School(‘sdau3‘,‘shandong3‘) # sdau=School(‘sdau‘,‘shandong‘) # python=Course(‘python‘,‘100‘,‘150‘,sdau.name) # print(python.school)#这是自己输入的值 #尝试让用户进行判断并且输入信息 msg={ ‘1‘:school1, ‘2‘:school2, ‘3‘:school3 } while True: school_chioce=input(‘please chioce your school‘ ‘1:school‘ ‘2:schoo2‘ ‘3:schoo3‘)#让学生进行选课,选择喜欢的学校 #msg[school_chioce]#获得了用户选择的实例 school_obj=msg[school_chioce]#之前已经实例化好了几所学校,学生选好学校之后,也就是选择实例化之后的学校的其他信息,可以调用实例的方法 course_name=input(‘please input your name‘) price = input(‘please input your price‘)#根据学生的选择来实例化课程 priod = input(‘please input your priod‘) final_course=Course(course_name,price,priod,msg[school_chioce]) print(‘this is you course %s‘ %final_course.school.name,)
if school_chioce==‘q‘: break
5.组合测试part1
import pickle class School: def __init__(self,name,addr,banji): self.name=name self.addr=addr self.banji=banji def save(self): with open(‘school.db‘,‘wb‘) as f: pickle.dump(self,f) class Student: def __init__(self,school,banji): self.school=school self.banji=banji class Lesson: def __init__(self,name,priod,price,addr): self.name=name self.priod=priod self.price=price self.addr=addr class Teacher: def __init__(self,school): self.school=school ############## school1=School(‘sdau‘,‘北京‘,{‘linux‘:‘1班‘,‘python‘:‘2班‘})#学校本来就是有的,让学生来选 school2=School(‘yingshangyizhong‘,‘上海‘,{‘go‘:‘3班‘}) #创建课程 lesson1=Lesson(‘python‘,‘50week‘,150,‘北京‘)#课程本来也就有的,让学生来选 lesson2=Lesson(‘linux‘,‘30week‘,60,‘北京‘) lesson3=Lesson(‘go‘,‘100week‘,900,‘上海‘) #学生选择 school_msg={ ‘1‘:school1,#对学校进行选择 ‘2‘:school2 } lesson_msg={ ‘1‘:lesson1, ‘2‘:lesson2, ‘3‘:lesson3 } school_chioce=input(‘plesae input your school 1:sdau 2:yingshangyizhong ‘) school_student=school_msg[school_chioce]#根据用户输入的数值,来确定选择的学校 if school_chioce==‘1‘: course_chioce=input(‘please input your course 1:python 2:linux ‘) else: course_chioce = input(‘please input your course 3:go‘) course_student=lesson_msg[course_chioce]#根据用户输入的数值来确定选择的课程 #此时学校和课程都选择好了,需要输出其他信息,比如说地点,班级 print(‘this is your school information: school:%s banji:%s distination:%s] ‘ %(school_student.name,school_student.banji[course_student.name],course_student.addr))
以上是关于2018-07-04-Python全栈开发day25-静态属性类方法静态方法以及组合的主要内容,如果未能解决你的问题,请参考以下文章