1、类的定义、使用、方法:
1>在python中,类的定义与函数的定义类似,类使用关键字‘class’。定义类时也要使用缩进的形式,以表示缩进的语句属于该类。
2>类在定义之后必须实例化才能使用属性和方法,一个类可以实例化成多个对象,如果直接使用类名修改类中的属性,那么所有实例化该类的对象都会被改变。
3>使用def定义方法,必须包含参数‘self’,而且‘self’必须为第一个参数
__author__ = 'Administrator'
# coding=utf-8
class 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.name
print t.age()
bai=Baidu()
print bai.title
print bai.url()
#The Results:
# Hero
# I am 28 Old
# 百度一下,你就知道
# Http://www.baidu.com
2、类的继承:
通过()中的继承父类,可以直接调用父类的函数,也可以通过,分隔符进行多重继承。
_author__ = 'Administrator'
# coding=utf-8
class 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.name
sohu_news=Sohu.Sohu_title
#函数中调用父类函数以及属性
def new_num(self):
return self.age()
def sohu_title(self):
return self.Sohu_title
def new_nn(self):
return self.name
bai=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.__name
pp=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 = name
self.score = score
stu=Student('Hero','python ')
print stu.name
print stu.score
#The Results
# Hero
# python
5、静态方法和类成员方法
__author__ = 'Administrator'
# coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
#@classmethod 修饰符
#通常情况下,如果我们要使用一个类的方法,那我们只能将一个类实体化成一个对象,进而调用对象使用方法。
#正常不实用@classmetod
class Yest():
def hero(self):
return "Hello,Hero"
a=Yest()
print a.hero()
#结果:Hello,Hero
#使用#classmethod,classmethod修饰的函数第一个参数应该是cls,即调用类为第一个参数,而不能为空
class Nest():
@classmethod
def shero(cls):
return "Hello,shero"
@staticmethod
def hello():
return "This is a staticmethod"
print Nest.shero()
print Nest.hello()
#result:Hello,shero,This is a staticmethod
#注意:@classmethod和@staticmetod区别在于,一个可以没参数一个必须要有cls参数