您好,欢迎来到外链网!
当前位置:外链网 » 站长资讯 » 专业问答 » 文章详细 订阅RssFeed

类的定义与使用,类的定义与使用修院子

来源:互联网 浏览:47次 时间:2023-04-08
2019-9-6Python类的定义与使用 类:描述具有相同属性和方法的对象的集合类变量:在整个实例化的对象中是公用的,类变量定义在类中且在函数体之外,类变量通常不作为实例变量使用方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写局部变量:定义在方法中的变量,只作用于当前实例的类实例变量:在类的声明中,属性是用变量来表示的,是在类声明的内部但是在类的其他成员方法之外声明的继承:即一个派生类继承基类的字段和方法实例化:创建一个类的实例,类的具体对象对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法

1、类的定义
语法:

class <类名称>: ["文件字符串"] #类文档字符串<语句> #类体,由类成员、方法、数据属性组成 class Car(object): #定义一个类,派生自object类 def infor(self): #定义成员方法 print("This is a car")

2、构造方法

类的构造方法或初始化方法,当创建了这个类的实例时就会调用该方法实例化对象时时可以传入参数的,这些参数会自动传入_ init _()方法中,可以通过重写这个方法来定义对象的初始化操作定义构造方法时,self是必要的参数且为第一个参数若在Python中定义类时没有定义_init_()方法,则在实例化时系统会自动调用默认的构造方法(无参的_init_()方法)一个类中可以定义多个构造方法,但是实例化类时只会实例化最后的构造方法,即后面的构造方法会覆盖前面的构造方法,并且需要根据最后一个构造方法的形式进行实例化(参数与最后一个构造方法的参数一致),因此一个类中最好只定义一个构造方法初始化实例包括:定义和初始化实例属性或调用类的一些方法
语法: def_init_(self): <语句> class Myclass: i=612 def __init__(self,you): self.you=you def func(self,me): self.me=me return self.me+" like "+self.youuser=Myclass("lion") print("调用类的属性:",user.i) print("调用类的方法:",user.func("monkey"))

调用类的属性:612
调用类的方法:monkey like lion

分析这段代码,一开始看着有点打脑壳,跟Java面向对象类的定义存在很多不一样。在定义类中函数时,通常需要将函数的第一个参数定义成self,而self指向对象本身。下面一个例子

class Breakfast: def set_name(self,name): self.name=name def get_name(self): return self.namea=Breakfast()b=Breakfast()a.set_name("milk")b.set_name("bread")print(a.get_name())print(b.get_name())

milk
bread

对象a,b在分别调用set_name()和get_name()方法时,self分别指向了a,b,即对象自身。

3、内置类属性
①_dict_:类的属性(包含一个字典,由类的数据属性组成)
②_doc_:类的文档字符串
③_name_:类名
④_module_:类定义所在的模块(类的全名称是’_ main _.className’,如果类位于一个导入模块mymod中,那么className._module _等于mymod)
⑤_bases _:类的所有父类构成元素(包含了由父类组成的元组)

4、类的实例
①创建类实例

car = Car() #实例化对象car.infor() #调用对象的成员方法//这里输出:This is a car

②内置函数isinstance()
作用:测试一个对象是否为某个类的实例

>>>isinstance(car,Car)True

③内置函数type()
作用:查看对象类型

>>>type(car)<class'_ _main_ _.Car'> 99416915