Python程序设计基础笔记
目录
第六章:面向对象程序设计
6.1 类的定义与使用
语法格式:
class 类名[(父类)]:
----内同
实例化对象:
对象名 = 类名([参数])
可以使用 type 查看一个对象实例化对象的类型,或者用 isinstance(实例名,类名) 来查看是否属于此类。
可以在定义类的时候使用注释,写在三引号中,在外部可以使用 类名.–doc-- 显示。
使用 dir(类名或实例名) 来查看此实例或者此类中包含的成员。
6.2 数据成员与方法成员
成员:
按私密性,分为 私有成员(命名时一般前面加两个下划线) 和 公有成员。
按成分 ,分为 数据成员 和 方法成员:
对于数据成员,分为 属于对象的数据成员 和 属于类的数据成员
对于方法成员,分为 实例方法 类方法 静态方法 和 抽象方法
私有的属于对象的数据成员:不可以在外部访问,可以在内部调用。
公有的属于对象的数据成员:可以通过实例在外部访问,可以在内部调用。
私有的属于类的数据成员;不可以在外部访问,可以在内部调用。
公有的属于类的数据成员:可以通过实例和类在外部访问,可以在内部调用。
属于类的数据成员的内部调用格式:
实例方法、静态方法:类名.数据成员
类方法:cls.数据成员
私有的实例方法:称为私有方法,不可以通过实例在外部访问,可以通过实例方法在内部调用。
公有的实例方法:称为公有方法,可以通过实例在外部访问,也可以通过实例方法在内部调用。
类方法:可以通过类和实例调用,不可以调用实例成员。
静态方法:可以通过类和实例调用,不可以调用实例成员。
抽象方法: 是特殊的实例方法,一般在抽象类中定义,并且要求在派生类中重新实现。
成员特殊命名格式:
- -xxx:以一个下划线开头,只有类对象和子类对象才可以访问这些成员,在类的外部一般不建议访问。在模块中此种成员不能用 from moudle import * 调用,除非在模块中使用 --all-- 变量明确指明。
- –xxx–:系统定义的特殊成员。
- –xxx:私有成员,只有类对象自己可以访问,在外部可以通过 对象名.-类名–xxx 这样的方式访问,但不建议这样做。
类的实现
class Person:
__people = 0 #私有类数据成员
men = 0 #公有类数据成员
def __init__(self,name,age,sex = 'male'): #构造方法,每当有新实例,此方法执行
self.name = name
self.__age = age
self.sex = sex
Person.__people += 1
if self.sex == 'male':
Person.men += 1
def showAdress(self,adress): #公有方法
self.__adress = adress #在公有方法中创建私有实例数据成员
print(self.name + ' is ' + str(self.__age) +
' years old , living in '+ self.__adress,end = ' , ')
return self.__hobby #在公有方法中调用私有成员方法
def __hobby(self,hobby): #定义私有方法
self.hobby = hobby
print('into '+hobby)
@classmethod #类方法,第一个参数是 cls ,代表 Person 类
def showPeople(cls):
print(str(cls.__people) + ' people in total')
@staticmethod #静态方法,可以不需要参数,注意其与类方法在调用类成员的区别
def showWomen():
print(str(Person.__people - Person.men) + ' women in total')
zs = Person('zhangsan',23) #实例化对象,使用了默认参数
ls = Person('lisi',