1、类的定义、使用、方法:
1>在python中,类的定义与函数的定义类似,类使用关键字‘class’。定义类时也要使用缩进的形式,以表示缩进的语句属于该类。
2>类在定义之后必须实例化才能使用属性和方法,一个类可以实例化成多个对象,如果直接使用类名修改类中的属性,那么所有实例化该类的对象都会被改变。
3>使用def定义方法,必须包含参数‘self’,而且‘self’必须为第一个参数
__author__ = 'Administrator'# coding=utf-8class Test:name='Hero'def age(self):return 'I am 28 Old'class Baidu():title='百度一下,你就知道'def url(self):return 'Http://www.baidu.com't=Test()print t.nameprint t.age()bai=Baidu()print bai.titleprint bai.url()#The Results:# Hero# I am 28 Old# 百度一下,你就知道# Http://www.baidu.com
2、类的继承:
通过()中的继承父类,可以直接调用父类的函数,也可以通过,分隔符进行多重继承。
_author__ = 'Administrator'# coding=utf-8class Test:name='Hero'def age(self):return 'I am 28 Old'class Sohu:Sohu_title='搜狐一下,你就知道'class Baidu(Test,Sohu):#继承Test、Sohu类,多重继承title='百度一下,你就知道'def url(self):return 'Http://www.baidu.com'#调用Test、Sohu类属性new_name=Test.namesohu_news=Sohu.Sohu_title#函数中调用父类函数以及属性def new_num(self):return self.age()def sohu_title(self):return self.Sohu_titledef new_nn(self):return self.namebai=Baidu()print bai.new_name,' ',bai.new_num(),' ',bai.new_nn(),' ',bai.sohu_news#The Results:# Hero# I am 28 Old# Hero# 搜狐一下,你就知道
3、类的属性:类中属性以双下划线__开始的为私有类,反之为公有类。私有类不可以在类外部使用或访问。
内部使用私有属性的调用方:self.__私有类名,式为
外部使用私有属性的调用方式为:实例化对象._类名__属性
class Private:__name='Private funtion'def name(self):return self.__namepp=Private()print pp.name()#外部调用私有属性print pp._Private__name#The Results#Private funtion
4、类的专有方法之__init__:
由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就name,score等属性绑上去.
有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须 方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去:
class Student(object):def __init__(self, name, score):self.name = nameself.score = scorestu=Student('Hero','python ')print stu.nameprint stu.score#The Results# Hero# python
5、静态方法和类成员方法
__author__ = 'Administrator'# coding=utf-8import sysreload(sys)sys.setdefaultencoding("utf-8")#@classmethod 修饰符#通常情况下,如果我们要使用一个类的方法,那我们只能将一个类实体化成一个对象,进而调用对象使用方法。#正常不实用@classmetodclass Yest():def hero(self):return "Hello,Hero"a=Yest()print a.hero()#结果:Hello,Hero#使用#classmethod,classmethod修饰的函数第一个参数应该是cls,即调用类为第一个参数,而不能为空class Nest():@classmethoddef shero(cls):return "Hello,shero"@staticmethoddef hello():return "This is a staticmethod"print Nest.shero()print Nest.hello()#result:Hello,shero,This is a staticmethod#注意:@classmethod和@staticmetod区别在于,一个可以没参数一个必须要有cls参数