目录
一、前言
二、类的定义
类的定义:
类属性:
类的方法:
创建类的实例和类方法的使用:
类的初始化及对象属性:
习题练习
拓展
python是一门面向对象的编程语言,而类就相当于一类事物,对象相当于一个具体的实例。就好比一个类叫做“人”,而“男人”和“女人”都是“人”这个类的实例化对象。那么我们应该怎么区别和精准定位这两个实例化对象呢?我们能想到的是用“性别”、“年龄”、“姓名”来区别和定位一个具体的实例化对象。至于类的类属性、对象属性、具体功能和用法跟我在下面来看看吧。
在python中我们用class来表示类,class后面跟的是我们定义类的名字,这个名字采用驼峰命名法即类名的首字母需要大写。
class Person:
pass
在前言中我们说到“性别”、“年龄”、“姓名”是Person类每个实例化对象都具有的属性,而且每个实例化对象所具有的属性值都不一样。我们把这三个就成为类属性。
class Person:
name = None
gender = None
age = int
pass
在这个代码中我们定义的“name”、“gender”、“age”就是Person类的类属性 。
在学习python的过程中我们学习过列表、字典的各种方法,那么应该怎么再类中定义一个方法呢?
class Person:
name = None
gender = None
age = int
def walk(self):
print("walk")
这个代码就是定义一个类方法,def 方法名,此时回车会自动补齐,我们会发现会出现self这个参数,这个参数代表的是Person类中调用类方法的实例化参数,简单来讲就是谁调用类方法,self就指向谁,:之后写的就是该方法的执行语句。
定义完类方法之后我们就来使用它,在使用之前我们需要先来定义实例化对象。
class Person:
name = None
gender = None
age = int
def walk(self):
print("walk")
liming = Person()
liming.walk()
运行结果:walk
创建类的实例:对象名 = 类名(参数)
类方法的使用:对象名.类方法名(参数)
__new__:创建一个新的对象,__init__:去给对象的这三个属性赋值
类属性位置:在类中,方法外 对象属性位置:在__init__方法中
在Person类中,我们每一个人可以说是Person类的实例化对象,我们每个人都有“性别”、“年龄”、“姓名”这些“类属性”,而我们每个人的“性别”、“年龄”、“姓名”都不同,这些我们成为对象属性。
那么如何定义对象属性呢,在我们定义类的时候会经历两个过程一个是申请存储空间__new__方法(python自动帮我们做的)另一个就是初始化__init__方法,我们可以在类的初始化时定义对象属性。具体操作如下:
class Person:
name = None
gender = None
age = int
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
self.__change_name = "person"
如果我们定义的对象属性恰好和类属性相同时,我们在定义实例化对象时如果没有写对象属性的相关参数那么他们的对象属性和Person的类属性相同。在类中self参数都代表类的实例化对象。
1.定义一个Book类:
定义类属性: count
定义对象属性或变量: title(书名), author(作者), publish(出版社), price(价格)
定义对象相加操作: book1 + book2 = book1.title + book2.title
举例: book1 + book2 = Java程序设计Python程序设计
定义打印对象的输出: 使用print打印 book1 => 书的名字-作者-出版社-价格
举例: print(book1) => Python程序设计-吉米勒-机械出版社-35
定义调用对象的方法:__call__(): 并让其返回书的名字
答案:
class Book:
count = None
def __init__(self, title, author, publish, price):
self.title = title
self.author = author
self.publish = publish
self.price = price
def __add__(self, other):
return self.title + other.title
def __str__(self):
return self.title + '—' + self.author + '—' + self.publish + '—' + str(self.price)
def __call__(self, *args, **kwargs):
return self.title
我们都知道1 + 1 = 2,不知道大家有没有想过为什么1 + 1 = 2,如果我们想让两个Person类的实例相加等于2,应该怎么操作?
在python中1 + 1 = 2是调用了__add__方法,如果我们在Person中也定义一个__add__方法那么会不会实现呢?我们一起来试试。
class Person:
name = None
gender = None
age = int
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
self.__change_name = "person"
def __add__(self, other):
print(2)
liming = Person("liming", 'male', 18)
lihua = Person("lihua", 'fmale', 18)
print(liming + lihua)
运行结果:2
我们可以看到如果我们定义了add方法并让它输出2,就可以实现让两个Person类的实例相加等于2。这里面牵扯到了父类、子类、还有继承等问题,如果想继续学习了解请关注博主后续带大家继续学习python中的类。