python中的class库_Python基础---类Class

类Class

类是抽象的模板,实例是根据类创建的一个个具体的对象,每个对象都拥有相同的方法,但是可能数据不同

定义:在Python中,使用class关键字定义类,class后面紧接着是类名

类名一般都是以大写字母开头的单词,类名后面紧跟(object),object代表该类所继承的类,如果没有明确继承的类,一般默认继承object类

1 class Name(object):

创建一个类:

1、类中的函数称为方法,一个class类中,必定含有一个__init__()这个特殊的方法,init两边分别是两个下划线

每当使用该类创建实例的时候,都会自动运行init方法

__init__(self, 形参1, 形参2...)方法中,形参self必不可少,必须位于所有形参前面,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法

在init方法下定义的两个变量都有前缀self,以self为前缀的变量都可供类中的所有方法使用,也可以通过类的任何实例来访问这些变量

1 className(object):2 def __init__(self, first_name, last_name):3 self.first_name =first_name4 self.last_name = last_name

2、有关于函数的一切都适用与方法,唯一的差别是调用方法的方式

3、在类中,还包含其他自己定义的方法,即函数

1 className(object):2 def __init__(self, first_name, last_name):3 self.first_name =first_name4 self.last_name =last_name5

6 defguest_name(self):7 name = self.first_name + ' ' + self.last_name # self前缀变量可以被guest_name方法直接使用8 print(name)

使用类和实例:

1、使用类进行创建实例

1 guest = Name('alan', 'wood')

2、访问属性:访问实例的属性,可以使用句点表示法

1 guest = Name('alan', 'wood')2 first =guest.first_name  # 查看guest实例的first_name变量值3 print(first)

4 --->alan

3、调用方法:在创建实例后,可以使用句点表示法来调用类中定义的任何方法

1 guest = Name('alan', 'wood')2 guest.guest_name()3 --->Alan Wood

继承:

当类A继承另一个类B时,A将获得B所有的属性和方法,所以B是A的父类,A是B的子类

子类在继承父类所有的属性和方法后,还可以定义自己的属性和方法

1、子类的方法__init__():

需要使用super()函数,将父类和子类关联起来(代码片段为Python 3.x版本写法)

1 classInformation(Name):2 def __init__(self, first_name, last_name, age, height):3 super().__init__(first_name, last_name)

2、给子类定义新的属性和方法

1 classInformation(Name):2 def __init__(self, first_name, last_name, age, height):3 super().__init__(first_name, last_name)4 self.age =age  # 子类中新的属性5 self.height =height6

7 defguest_age(self):  # 子类的方法8 print('The guest\'s age is' +str(self.age))9

10 defguest_height(self):11 print('The guest\'s age is' +self.height)12

13

14 guest = Information('alan', 'wood', 18, '180cm')15 guest.guest_name()  # 子类可以直接调用父类中的方法16 guest.guest_age()17 guest.guest_height()

3、父类中的方法只要不符合子类的目标,就可以进行重写,可在子类中定义方法,方法名称要与父类方法同名,在使用子类创建实例时,Python只会关注子类中的被重写方法

1 classInformation(Name):2 def __init__(self, first_name, last_name):3 super().__init__(first_name, last_name)4

5 defguest_name(self):  # 在子类中重写了父类的guest_name方法6 name = self.first_name + '----' +self.last_name7 print(name)8

9

10 guest = Information('alan', 'wood')11 guest.guest_name()  # 调用guest_name方法,输出结果显示,使用的是重写后的方法12 --->alan----wood

导入类:

1、导入单个类:

1 from PyQt5.QtWidgets import QApplication

2、导入多个类:

在一个模块中可以存储多个类

1 from PyQt5.QtWidgets import QApplication, QAction

3、导入整个模块:

导入模块后,如果要使用相关类,则需要句点表示法

1 importPyQt52

3 x = PyQt5.QtWidgets.QAction()

类编码风格:

1、类名采用驼峰命名法,即类名中的每个单词的首字母都要大写,而不是用下划线

2、在类定义后,需要包含一段注释('''  '''),简要描述类的功能,并遵循函数的注释编写的规则

3、在类中,可使用一个空行分割方法,在模块中,使用两个空行分割类

4、在导入标准库的模块和自定义的模块时,先导入标准库模块,再导入自定义模块,中间使用空行隔开

类的常用函数:

1、issubclass()

检测一个类是否是另一个或一组类中的子类

语法:issubclass(cls1, cls2)  cls1是否是cls2的子类

issubclass(cls1, (cls2, cls3))  cls1是否是cls2或者cls3的子类

返回值:bool

1 classAnimal():2 pass3

4 classDog(Animal):5 pass6

7 classCat(Animal):8 pass9

10 print(issubclass(Dog, Animal))11 --->True

2、isinstance()

检测某个对象是否是指定类的对象

语法:isinstance(obj, type)

返回值:bool

1 classAnimal():2 pass3

4 classDog(Animal):5 pass6

7 classCat(Animal):8 pass9

10 dog =Dog()11 print(isinstance(dog, Dog))12 --->True13 print(isinstance(dog, Animal))14 --->True

3、hasattr()

检测一个对象或类有无制定成员

语法:hasattr(cls, string)

返回值:bool

1 classAnimal():2 name = 'x'

3 age = 11

4

5 print(hasattr(Animal, 'name'))6 --->True

4、getattr(obj, attrname)      获取对象或类成员的值,对已存在的值  等价于  obj.attrname

getattr(obj, attrname, default)  ----------------------,对不存在成员设置默认值,但是只对当此有效,返回default默认值

setattr(obj, attrname, value)    设置对象或类成员的值,相当于 obj.attrname = value

delattr(obj, attrname)       删除对象或类成员的值,需要保证对象中含有attrname

5、dir()

获取一个对象或类的所有成员

语法:dir(obj)

返回值:list

类的内置属性:

1、__dict__ :

获取类或对象自身的属性

语法:obj.__dict__

返回值:字典

2、__doc__:

获取类或对象的文档,即''' '''中的内容 document

语法:obj.__doc__

3、__name__:

获取类名,对象不可用

语法:cls.__name__

4、__bases__:

获取类的直接继承的所有父类的元组

语法:cls.__bases__

返回值:元组

5、__moudle__:

获取类的模块名称

语法:cls.__moudle__

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值