类(class)python
python中的类是描述具备相同属性和方法的对象的集合函数
类的通常形式:this
class ClassName:对象
'''类的说明'''继承
类的内容文档
类的内容能够写类的全局变量,方法等字符串
例子:get
class ren(object):it
'''this is a new class'''模板
name = 'meinv'
sex = 'woman'
#类的实例化
a = ren()
print(type(a))
print(a.name)
print(a.sex)
a.age = 10
print(a.age)
结果:
<class '__main__.ren'>
meinv
woman
10
类的构造器
__init__ 构造函数,在生成对象时调用。因为类能够起到模板的做用,所以,能够在建立实例的时候,把一些咱们认为必须绑定的属性强制填写进去。经过定义一个特殊的__init__方法,在建立实例的时候,就把name,score等属性绑上去:
例子:
#全部类都继承object类,不写则默认是继承object类
class Student(object):
#类的构造器,调用类的时候self能够不指定,python解释器默认将self指定到自身
def __init__(self, name, score):
self.name = nam
self.score = score
例子2:
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
s = Student('abc', 123)
print(s.name)
print(s.score)
输出:
abc
123
类的继承
Python的类支持多继承,多继承的格式以下,使用逗号分隔:
例子:
class A:
…
class B:
...
class C(A, B):
...
类的继承中,Python首先使用子类中的方法,若是子类中没有则去父类中寻找。变量也相同,首先寻找子类中的变量,没有找到后才去父类中寻找。
例子2:
class parent:
name = 'parent'
age = 100
def __init__(self):
print('my name is parent')
def get_name(self):
return self.name
def get_age(self):
return self.age
class child(parent):
def __init__(self):
print('my name is clild')
def hello(self):
print('hello child')
a = child()
a.hello()
print(a.get_name())
print(a.get_age())
输出:
my name is clild
hello child
parent
100
类的重写
Super()方法
#在class parent(object):定义父类的时候,必定要写继承object类,否则会报错能够解决
class parent(object):
name = 'parent'
age = 100
def __init__(self):
print('my name is parent')
def get_name(self):
return self.name
def get_age(self):
return self.age
class child(parent):
def __init__(self):
super(child, self).__init__()
#parent.__init__()
#使用父类.方法的方式直接重写,可是类中须要重写的内容较多时不方便
print('my name is child.')
def hello(self):
print('hello child')
a = child()
a.hello()
print(a.get_name())
print(a.get_age())
输出:
my name is parent
my name is child
hello child
parent
100
类的私有变量
单下划线开头表示protected类型变量,在一个模块中以单下划线开头的变量和函数被默认看成内部函数。即保护类型只能容许其自己与子类进行访问。 当使用“from a_module import *”时,不会将以一个下划线开头的对象引入 ;若是使用 import a_module 这样导入模块,仍然能够用 a_module._some_var 这样的形式访问到这样的对象。
双下划线表示私有类型的变,只能容许这个类自己进行访问,连子类也不能够用。
先后双下划线定义的是特列方法。用户控制的命名空间内的变量或是属性,如__init__, __import__。只有当文档有说明时使用,不要本身定义这类变量。 (就是说这些是python内部定义的变量名)
例子
classPersonDemo():
def __init__(self):
self.__name=''
self.__age=0
def get_name(self):
return self.__name
def set_name(self,value):
self.__name=value
a=PersonDemo()
a.set_name('kwsy')
print a.get_name()
内置类属性
__dict__ : 类的属性(包含一个字典,由类的数据属性组成)
__doc__ :类的文档字符串
__name__: 类名
__module__: 类定义所在的模块(类的全名是'__main__.className',若是类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
__bases__ : 类的全部父类构成元素(包含了以个由全部父类组成的元组)