类方法定义
在类中可以根据需要定义一些方法,定义方法采用def关键字,在类中定义的方法至少会有一个参数,一般以名为'self'的变量作为该参数(用其他名称也可以),而且需要作为第一个参数。
举例:
class people:
sname='xiaohong'
high = 172.5
weight = 180
sex = '男'
def eat(self,food):
print self.sname+"eat"+food
wangbaoqiang= people() #实例化 gaojiajun是people类的实例化对象
wangbaoqiang.sname=”王宝强”
self指的是类实例对象本身(注意:不是类本身)。
在上述例子中,self指向Person的实例gaojiajun,可以把它当做C++中类里面的this指针一样理解,就是对象自身的意思
类的私有属性和封装
如果想定义成私有的,则需在前面加2个下划线 ’ __’。
私有属性只能在本类中使用
举例:
class people:
__sname=’xiaohong’
__high = 172.5
__weight = 180
__sex = ‘女’
def eat(self,food):
print self.sname+"eat"+food
def getsname(self):
return self.__sname
def setsname(self,str):
self.__sname=str
由于__sname是私有属性,在类的外面不能直接使用,所以我们定义了getsname去获取该属性的值、setsname去给该属性赋值,这种使用方法称为封装
Python类中内置的方法
在Python中有一些内置的方法,这些方法命名都有比较特殊的地方(其方法名以2个下划线开始然后以2个下划线结束)。
1、init(self,….):构造方法,在生成对象时调用,可以用来进行一些初始化操作,不需要显示去调用,系统会默认去执行。构造方法支持重载,如果用户自己没有重新定义构造方法,系统就自动执行默认的构造方法。
2、del(self):析构方法,在释放对象时调用,支持重载,可以在里面进行一些释放资源的操作,不需要显示调用。
3、dict : 类的属性(包含一个字典,由类的数据属性组成)
4、doc :类的文档字符串
5、name: 类名
6、module: 类定义所在的模块(类的全名是’main.className’,如果类位于一个导入模块mymod中,那么className.module 等于 mymod)
7、bases : 类的所有父类构成元素(包含了以个由所有父类组成的元组)
类中方法的类型
类方法
是类对象所拥有的方法,需要用修饰器”@classmethod”来标识其为类方法。它能够通过实例对象和类对象去访问。类方法的用途就是可以对类属性进行修改。对于类方法,第一个参数必须是类对象,一般以”cls”作为第一个参数,
举例:
class people:
country = 'china'
@classmethod
def getCountry(cls): #类方法
return cls.country
@classmethod
def setCountry(cls,country): #类方法
cls.country = country
p = people()
p.setCountry(‘japan’)
实例方法
在类中最常定义的成员方法,它至少有一个参数并且必须以实例对象作为其第一个参数,一般以名为’self’的变量作为第一个参数。(注意:不能通过类对象引用实例方法)
静态方法
需要通过修饰器”@staticmethod”来进行修饰,静态方法不需要多定义参数。
静态方法能够通过实例对象和类对象去访问,静态方法中如果有参数,则是必备参数
举例:
class people:
country = 'china'
@staticmethod
def getcountry():
return people.country
@staticmethod
def setcountry(countryName):
people.country=countryName
print people.getcountry()
p=people()
print p.getcountry()