python面向对象程序设计
(来自个人的印象笔记)
---------------------------
类是把具有相同特性(数据)和行为(函数)的对象抽象为类
了解几个术语:
类,类对象,实例对象,属性,函数,方法
------------------------------------------------------------------
定义类:
class Person:(类名默认规定大写字母开头)
#定义属性
name = 'james'
age = 20
#定义了一个方法
def printName(self):
print self.name
p.Person()就产生了一个实例对象
类对象就是类名
p.name就是实例属性
访问属性:
两种方法
1.Person.name,Person.age
2.p.name,p.age
通过类名去访问,或者通过对象去访问
以上name,age都是公有的属性,定义为私有就在前面加2个下划线__
__name,__age
-------------------------------------------------------------
类的方法:
python的方法有实例方法,类方法,静态方法之分
类方法:@classmethod来修饰
@classmethod
def show(cls):
……
类方法调用时会向他的第一个参数传递类的名称,而不是传递实例对象,这就是和实例方法不同的地方
静态方法:@staticmethod
不传递任何参数
实例方法:def show(self):这种就是实例方法
实例方法通过实例对象来调用:p.show()
Person.show(p)-----self接收的是类的实例对象
实例方法传递的是实例对象,类方法传递的是类名称,这是最大区别
类调用实例方法:
Person.instanceShow(p)
对象调用类方法:
p.classShow()
对象调用静态方法:
p.staticShow()
------------------------------------------
对象的初始化问题:
构造__init__和析构__del__函数
系统自动调用
python规定:类中只能有一个构造函数
__init__(self,n="",g="",a=0)可以这样定义默认值实现初始化,类似函数重载。
-------有个重点:
在构造方法函数和析构方法函数中,参数返回值应注意!
举例:
class Person:
def __init__(self, n):
def __del__(self):
def show(self):
p = Person("James")
p.show()
print(p)
结果如何?
在执行p=Person()语句是建立一个Person对象实例p,于是自动调用__init__函数,并向这个函数传递两个参数,一个是对象实例p传递给self,一个是"James"传递给n,于是__init__可以看到:
__init__ <__main__.Person ……>这个是p对象的内存地址,切记。
p.show()是通过实例调用的,所以p实例传递给函数show的self参数,其中self地址和p是一样的,是同个对象。
记住,类的实例方法都至少有一个参数,第一个参数通常命名为self。
---------------------------------------------
类的派生和继承:举例说明
class Student(Person):
def __init__(self,name,gender,age,major,dept):
Person.__init__(self,name,gender,age) --->(继承类构造函数,python不会自动调用。要专门调用)
self.major = major
self.dept = dept
def show(self):
Person.show(self,"") ----->使用基类名称调用
print(self.major,self.dept)
s=student("","","","","")
s.show()
-------------------------------------------------
方法和属性继承
……传递关系,先找到自己类,再找上一级的类,直到基类
--------------------------
这里类的基础知识也就差不多了,可以做个学生信息管理系统作为练手项目