• 07、更加抽象--类


    1、类的定义、使用、方法:
    1>在python中,类的定义与函数的定义类似,类使用关键字‘class’。定义类时也要使用缩进的形式,以表示缩进的语句属于该类。
    2>类在定义之后必须实例化才能使用属性和方法,一个类可以实例化成多个对象,如果直接使用类名修改类中的属性,那么所有实例化该类的对象都会被改变。
    3>使用def定义方法,必须包含参数‘self’,而且‘self’必须为第一个参数
    1. __author__ = 'Administrator'
    2. # coding=utf-8
    3. class Test:
    4. name='Hero'
    5. def age(self):
    6. return 'I am 28 Old'
    7. class Baidu(): title='百度一下,你就知道'
    8. def url(self):
    9. return 'Http://www.baidu.com'
    10. t=Test()
    11. print t.name
    12. print t.age()
    13. bai=Baidu()
    14. print bai.title
    15. print bai.url()
    16. #The Results:
    17. # Hero
    18. # I am 28 Old
    19. # 百度一下,你就知道
    20. # Http://www.baidu.com
    2、类的继承:
    通过()中的继承父类,可以直接调用父类的函数,也可以通过,分隔符进行多重继承。
    1. _author__ = 'Administrator'
    2. # coding=utf-8
    3. class Test:
    4. name='Hero'
    5. def age(self):
    6. return 'I am 28 Old'
    7. class Sohu:
    8. Sohu_title='搜狐一下,你就知道'
    9. class Baidu(Test,Sohu):
    10. #继承Test、Sohu类,多重继承
    11. title='百度一下,你就知道'
    12. def url(self):
    13. return 'Http://www.baidu.com'
    14. #调用Test、Sohu类属性
    15. new_name=Test.name
    16. sohu_news=Sohu.Sohu_title
    17. #函数中调用父类函数以及属性
    18. def new_num(self):
    19. return self.age()
    20. def sohu_title(self):
    21. return self.Sohu_title
    22. def new_nn(self):
    23. return self.name
    24. bai=Baidu()
    25. print bai.new_name,' ',bai.new_num(),' ',bai.new_nn(),' ',bai.sohu_news
    26. #The Results:
    27. # Hero
    28. # I am 28 Old
    29. # Hero
    30. # 搜狐一下,你就知道
    3、类的属性:类中属性以双下划线__开始的为私有类,反之为公有类。私有类不可以在类外部使用或访问。
    内部使用私有属性的调用方:self.__私有类名,式为
    外部使用私有属性的调用方式为:实例化对象._类名__属性
    1. class Private:
    2. __name='Private funtion'
    3. def name(self):
    4. return self.__name
    5. pp=Private()
    6. print pp.name()
    7. #外部调用私有属性
    8. print pp._Private__name
    9. #The Results
    10. #Private funtion

    4、类的专有方法之__init__:
    由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就name,score等属性绑上去.
    有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须 方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去:
    1. class Student(object):
    2. def __init__(self, name, score):
    3. self.name = name
    4. self.score = score
    5. stu=Student('Hero','python ')
    6. print stu.name
    7. print stu.score
    8. #The Results
    9. # Hero
    10. # python
    5、静态方法和类成员方法
    1. __author__ = 'Administrator'
    2. # coding=utf-8
    3. import sys
    4. reload(sys)
    5. sys.setdefaultencoding("utf-8")
    6. #@classmethod 修饰符
    7. #通常情况下,如果我们要使用一个类的方法,那我们只能将一个类实体化成一个对象,进而调用对象使用方法。
    8. #正常不实用@classmetod
    9. class Yest():
    10. def hero(self):
    11. return "Hello,Hero"
    12. a=Yest()
    13. print a.hero()
    14. #结果:Hello,Hero
    15. #使用#classmethod,classmethod修饰的函数第一个参数应该是cls,即调用类为第一个参数,而不能为空
    16. class Nest():
    17. @classmethod
    18. def shero(cls):
    19. return "Hello,shero"
    20. @staticmethod
    21. def hello():
    22. return "This is a staticmethod"
    23. print Nest.shero()
    24. print Nest.hello()
    25. #result:Hello,shero,This is a staticmethod
    26. #注意:@classmethod和@staticmetod区别在于,一个可以没参数一个必须要有cls参数












  • 相关阅读:
    <强化学习>无模型下计算给定策略对应的价值函数,Model free Prediction,评估一个给定策略的表现
    <强化学习>马尔可夫决策过程MDP
    <组合数学>排列组合(2)/可重组合,不相邻组合,SJT算法
    <组合数学>排列组合(1)/格路模型,范德蒙德恒等式
    <组合数学>计数/加减乘除计数/加法法则/乘法法则/减法法则
    <组合数学>开门帖
    <组合数学>幻方
    Windows装机必备
    利用Jmeter操作MySQL数据库
    利用Jenkins插件实现多个job并行后再触发job
  • 原文地址:https://www.cnblogs.com/hero-blog/p/4113519.html
Copyright © 2020-2023  润新知