类是一种数据类型,而对象是具有这种数据类型的变量。类是抽象的,不占有内存空间。而对象是具体的,占有储层空间。
python中,通过class关键字定义类。
形式:
class className:
类体
类体定义类的成员,有二种类型成员。一是数据成员,它描述问题的属性。二是成员函数,它描述问题的行为。
类是抽象的,要使用类定义的功能必须将类实例化,即创建对象。 对象名=类名(参数列表)
class Person:
name=' '
age=0
def display(self):
print('name={0},age={1}'.format(self.name,self.age))
p=Person()
p.name='tom'
p.age=22
p.display()
结果
name=tom,age=22
面向对象,具有继承,抽象,封装等特点
python中,定义的方法至少含一个参数,一般默认self(相当于,其它语言的this吧),需要作为第一个参数。
类属性就是类对象拥有的属性,它被类对象共有,在内存中只有一个副本
class Person:
name=' ' #共有类属性
__age=0 #私有类属性
def setAge(self,a):
self.__age=a
def display(self):
print('name={0},age={1}'.format(self.name,self.__age))
p=Person()
#p.name='tom' 可以,但是不提倡
Person.name='tom'
p.setAge(22)
p.display()
类属性,属于类,既可以通过类访问,也可以通过对象访问,但是不建议通过对象访问。
实例属性, 不需要再类中显示定义,而在init中构造函数中定义,定义时以self为前缀。在其它方法也可以随意添加实例对象对象,建议不这么做,最好在init中给出。
实例属性属于实例对象,只能通过对象访问。
class Animal:
def __init__(self,n,c):
self.name=n #定义实例属性
self.color=c
def display(self):
print('name={0},color={1}'.format(self.name,self.color))
an=Animal('dog','black')
an.display()
name=dog,color=black
类的方法
类中的内置方法, 在python中有一些内置方法,这些方法名都有特殊的约定,以2个下划线开始,2个下划线结束, 类中最常用的就是构造方法和析构方法。
构造方法 init(self,***) 在生成对象的时候调用,可以进行一些属性初始化操作,不需要显示调用,系统会默认执行。构造方法支持重载,如果用户没有定义新的构造方法,系统会自动执行默认的构造方法。
析构方法 del(self)在释放对象的时候调用,支持重载,不需要显示调用。
class Animal:
def __init__(self,n,c):
self.name=n #定义实例属性
self.color=c
print("执行了构造函数")
def __del__(self):
print("执行了析构函数")
def display(self):
print('name={0},color={1}'.format(self.name,self.color))
an=Animal('dog','black')
an.display()
del an
结果是:
执行了构造函数
name=dog,color=black
执行了析构函数
分2部分吧。。。