Python类的一般形式和继承
1、 类的一般形式
创建类,一般用class关键字创建一个类,
class ClassName:
'''类的说明''' 类的内容
类的内容可以写类的全局变量,方法:
class ren(object): '''this class is abort class''' name = 'meizi' sex = 'F' def hello(selfself): print('hello world!')a = ren()print(type(a))print(a.name)print(a.sex)a.hello()
结果:
<class '__main__.ren'>
meizi
F
hello world!
2、 类的构造器
__init__ 构造函数,在生成对象时调用。由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去
class Student(object): def __init__(self, name, score): self.name = name self.score = score
__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去
class Student(object): def __init__(self, name, score): self.name = name self.score = scorea = Student('abc',20)print(a.name)print(a.score)
结果:
abc
20
3、 类的继承
当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。
我们可以继承了object类,object类是所有类的父类,所有的类都默认继承object类,它是一个超级类,如果不写,默认继承object。
class A(父类): pass
python的类支持多继承
class A: #定义类A passclass B(A): #定义类B,类B继承类A passclass C(A,B): #定义类C,继承类A,类B pass
例:
class ren: name = 'ren' sex = 'F' def __init__(self): print('ren is {0}'.format(self.name)) def get_name(self): return self.name def get_sex(self): return self.sexclass child(ren): name = 'test' sex = 'M' def __init__(self): print('my name is {0}'.format(self.name)) def hello(self): print('hello world!') def get_name(self): return self.name def get_sex(self): return self.sextest = child()test.hello()print(test.get_name())print(test.get_sex())
结果:
my name is test
hello world!
test
M
例:
class ren: name = 'ren' sex = 'F' def __init__(self): print('ren is {0}'.format(self.name)) def get_name(self): return self.name def get_sex(self): return self.sexclass child(ren): # name = 'test' # sex = 'M' def __init__(self): print('my name is {0}'.format(self.name)) def hello(self): print('hello world!') def get_name(self): return self.name def get_sex(self): return self.sextest = child()test.hello()print(test.get_name())print(test.get_sex())
结果:
my name is ren
hello world!
ren
F