语法(4)
类
创建
-
与其他大部分语言一样,Python也用
class
来创建类。class Person: # Person类 pass # 空语句
-
创建实例
person = Person() # 创建Person实例 print person # 会打印出实例信息
self
- Python中使用
self
来指代实例自己,相当于Java、C++中的this
- Python中
类的每个成员方法
的第一个参数
必须是self
,这样类中每个方法就都可以调用到实例自己。
方法
-
成员方法
: 以self
作为第一个参数class Person: def sleep(self, t): # 定义成员方法 print 'sleep %f' % t print self # 实例信息 Person().sleep()
-
构造方法
:__init__
是Python类的构造方法。class Person: def __init__(self, name, age): # 构造方法 print name print age pass
创建实例时写入参数
person = Person('AC', 30)
也可以像普通方法一样,
定义默认参数
class Person: def __init__(self, name, age=10): print name print aeg pass person = Person('AC')
-
类方法
: 静态方法,相当于Java与C++里的static
方法
只要不写self
变量,方法就是静态方法,还需要加上@staticmethod
来修饰。class Person: @staticmethod # 方法修饰 def count(): # 类方法 return 0 print Person.count()
变量
-
类变量
: 静态变量,相当于static
调用时用类名.变量名
class Person: num = 0 # 定义类变量num @staticmethod def count(): return Person.num # 类方法调用 print Person.num # 调用 print Person.count()
-
成员变量
: 定义和调用时都直接用self.变量名
class Person: def __init__(self, name, age): self.name = name # 创建name属性,并赋值 self.age = age # 创建age属性,并赋值 def info(self): print self.name # 调用 print self.age
综合例子
# Person.py class Person: num = 0 # 总人数 def __init__(self, name, age): self.name = name self.age = age Person.num = Person.num + 1 # 每创建一个实例,总人数加1 @staticmethod def count(): """ 获得总人数 """ return Person.num def info(self): """ 打印信息 """ print self.name print self.age p1 = Person('AC', 30) p2 = Person('Mount', 18) p1.age = 31 # 修改变量 print p1.info() print p2.info() print Person.count()
继承
-
在定义类时,在类名后加上
(父类)
。# Programmer.py from Person import Person class Programmer(Person): pass
这样Programmer就继承了Person。
-
没有继承的类与Java一样都默认继承自一个继承类
object
相当于class Person(object): pass
-
方法重写
# Programmer.py from Person import Person class Programmer(Person): def __init__(self, name, age, lang): # 重写构造方法 Person.__init__(self, name, age) # 调用父类构造方法 self.lang = lang # 添加的语言属性 def info(self): # 重写父类方法 print 'Programmer' print self.name print self.age Programmer('AC', 30, 'lua').info() print Person.couont()
除了重写的方法,Programmer类会继承Person类的一切。
-
没有继承的类与Java一样都默认继承自一个继承类
object
相当于class Person(object): pass
-
Python支持
多重继承
class A: pass class B: pass class C: pass class Person(A, B, C): # 继承多个类 pass
本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 )
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4528963.html