python类
类:具有相同的属性和方法的对象的集合。
对象:万物皆对象
类和对象的关系:
类的包含属性和方法:
语法:
class 类名:
属性
对象属性 -->私有 共有
类属性 -->私有 共有
方法:
公有方法
私有方法
类方法
属性方法
静态方法:
2、当生成子类对象时,先初始化父类对象,
所以如果父类有__init__()方法,并且有属性时,要通过子类的构造赋值,
一个类可以有多个子类。
初始化时..在子类中,调用父类的属性时,在__init__()方法中使用
super().__init__(self,属性)或self.属性或父类.__init__(self,参数)==>父类.__init__(self)-->调用无参
super(子类,self).__init__(参数)
用子类的父类的 __init__
四种方法给父类传参
调用父类方法时:super().父类方法()
1、自定义的语法格式
class 类名:
'''可注释的文档字符串'''
类成员
2、类定义的结构
class关键字
类名
冒号(:)
文档字符串:可选的
类成员:类的属性和方法
3、自定义一个plane类
class Plane:
def disPlayplane(self): #(self)在类的方法定义中使用self,是一个隐函数.
pass——>表示空语句
4、pass语句
空语句
不做任何操作,一般用作占位语句
用于保证格式完整,保证语义完整
5、类名的命名规范
首字母大写
以大写字母分隔单词
不使用下划线
例:class Flay:
6、属性名:
使用名词,说明操作的对象
首字母小写
例:name,plane
7、方法名:
使用谓词(动词+对象),说明对什么对象进行操作
首字母小写
例:
python类与对象
1、创建类对象的语法格式
对象=类名(参数列表)
注:参数列表是可选的
2、访问类属性,方法之前必须先创建一个实例对象。
3、使用 点运算符“.”访问类对象的属性,调用类对象的方法.
例:创建plane类的默认实例对象
类对象的生命周期
self
1、英文中表示自己,本身
程序中表示类实例对象本身
是当前类的实例对象
2、使用方法
作为类方法定义的第一个参数
是隐函数,调用方法是不需要传入实参
def 方法名(self,参数列表)
访问类实例对象的属性
self.属性
调用类实例对象的方法
self.方法(参数列表)
示例:创建一架波音777的Plane类对象
类和对象的属性
1、任何时候都可以添加,修改或删除类和对象的属性
2、使用赋值运算符为类对象添加,修改属性值
3、使用del删除类对象的属性
del 类名.属性名
4、plane类对象添加,删除,修改属性----carryNum
例:添加一个属性名为carryNum
例:修改carryNum的值
销毁对象
手工回收:
调用__del__()方法清理销毁对象的任何非内存资源.
例:回收对象占用的资源
python类的属性
示例:通过属性获取已创建对象的个数
2、属性
一、类属性
与类绑定,不依赖于对象,又称为静态属性
不需要实例化对象
类和对象都可以访问获取其值
二、实例属性
存在于对象中
必须先创建对象,在访问获取其值
每一个不同的对象都有属于自己的实例属性值
注:当通过对象访问某个属性时候,解释器会先尝试在实例命名空间中寻找.如果找不到,就会去类属性中查找
类属性
1、在类体中声明,并初始化。
访问方式:
类名.属性
对象名.属性
例:
注:类属性属于类自身,对象仅在没有同名实例属性时才能访问他
2、类属性
例:
注:
1、类和对象都可以访问类属性,但对象只能读取,不能修改类属性的值。
2 、当试图通过对象给类属性赋值时吗,解释器会理解为:给对象p的pcount属性赋值
3、如果对象p没有pcount属性,会自动的给对象p创建一个与类属性同名的实例属性
因此p.pcount属性与plane.pcount不是同一属性
获得类属性信息
dir():返回类属性列表
2、类的字典属性__dict__:返回一个字典
(key)键是属性名
(vaule)值是相应的属性对象的数据值
例:
实例属性
1、多种声明方式
__init__()声明,并赋值
通过赋值语句声明,并赋值
例:
2、对象可以访问类属性,但类不能访问实例属性
例:
特殊的类属性
每个类都具有内置属性
使用点运算符“.”可以访问
常见的类属性
特殊的实例属性
1、获得实例属性信息
一、内置函数dir()
二、特殊的对象属性__dict__:获得对象的属性
三、特殊的对象属性__class__:获得对象所有对应的类名
例:
2、常用的内置函数
例:
class Plane:
pcount=0
def __init__(self,name,category):
self.name=name
self.category=category
plane.pcount+=1
def displayplane(self):
print('飞机名称:',self.name,'飞机型号:',self.category,'飞机架次:',Plane.pcount)
if __name__=='__main__':
p=Plane()
print(hasatter(p,'_name'))
结果:
python类的方法
一、与类绑定,依赖于对象
二、在类中声明定义
三、必须先创建对象,在调用执行
四、类对象可以调用执行
注:实例方法名(self,参数列表)
2、类方法
与类绑定,不依赖于对象
不需要实例化对象
类和其对象都可以调用执行
注:@classmethod
类方法名(cls,参数列表)
3、静态方法
与类方法相似
注:@ststicmethod
静态方法名(参数列表)
1、语法
@classmethod
类方法名(cls,参数列表)
通过装饰器“@classmethod”通知解释器是类方法
第一个参数cls表示当前类
cls是隐含参数,调用方法时不需要传入实参
示例1:
静态方法
1、语法
@staticmethod
静态.方法名(参数列表)
2、通过装饰器“@staticmethod”通知解释器是静态方法
3、没有隐含参数
示例2:抽取输出代码形成一个静态方法
示例3:
class traffic:
def __init__(self,name):
self.name=name
def run(self):
print('交通工具'+self.name+'正在行驶')
class Truck(traffic):
def __init__(self,name,weight):
super().__init__(name)
self.weight=weight
def run(self):
print('卡车'+self.name+'重'+str(self.weight)+'正在行驶')
class Train(traffic):
def __init__(self, name,num):
super().__init__(name)
self.num =num
def run(self):
print('火车' + self.name + '车厢数' + str(self.num) + '正在行驶')
if __name__ == '__main__':
a=Truck('东风',10)
a.run()
x=Train('和谐001',500)
x.run()
结果: