Python带有许多内置数据类型,例如dict , list , set等。您是否想知道是否可以创建自己的数据类型? 像person , car , university等? 创建这样的数据类型是否可能? 是的,这在Python中当然是可能的,而这正是类和对象起作用的地方。
在本教程中,我将描述类和对象的含义,以及如何在Python中使用它们。
类和对象
如上所述,类和对象是关于创建自己的数据类型(即用户定义的数据类型)的。 因此, 类是用户定义的数据类型,创建类的实例(实例化)意味着创建该类型的对象 。 归根结底,类和对象被认为是Python的主要构建模块,Python是一种面向对象的编程语言。
在Python中创建类会是什么样? Python中最简单的类结构如下所示:
class ClassName:
statements
如您所见,定义类以class关键字开头, className是类的名称(标识符)。 请记住,类名遵循与Python中变量名相同的规则,即名称只能以字母或下划线_开头,并且只能包含字母,数字。 或下划线。 另外,参考PEP 8 (Python代码样式指南),我们可以看到建议以CapWords(上部CamelCase)样式命名类。
现在让我们定义一个Person类,该类目前除了pass语句之外将不包含任何内容。 如Python文档中所述:
pass语句不执行任何操作。 在语法上需要语句但程序无需执行任何操作时可以使用它
class Person:
pass
为了创建此类的实例(对象),我们可以简单地执行以下操作:
abder = Person()
这意味着我们创建了一个Person类型的新对象abder 。 请注意,创建对象只是在类名后加上括号。
我们可以通过键入abder内容来识别abder类型以及它在内存中的位置: print abder 。 在这种情况下,您将获得以下内容:
<__main__.Person instance at 0x109a1cb48>
属性
属性就像我们要添加到类(类型)的属性一样。 例如,对于我们的Person类,让我们添加两个属性: name和school ,如下所示:
class Person:
name = ''
school = ''
现在,我们可以创建一个具有更多详细信息的Person类型(Person实例)的新对象,因为它现在具有一些属性,如下所示:
abder = Person()
abder.name = 'Abder'
abder.school = 'ABC University'
方法
方法就像Python中的函数一样,因为它们是用关键字def定义的,并且格式与函数相同。 在我们的课堂上,让我们定义一个打印人的姓名和学校的方法。 该类如下所示:
class Person:
name = ''
school = ''
def print_name(self):
print self.name
def print_school(self):
print self.school
abder = Person()
abder.name = 'Abder'
abder.school = 'XY University'
abder.print_name()
abder.print_school()
我在上面提到过,方法就像函数。 但是主要的区别是方法需要有一个方便地命名为self的参数,该参数是指调用方法的对象(即abder)。 注意,在调用方法时,我们不需要将self作为参数传递,因为Python将为我们处理该参数。
如果我们不将self用作print_name()的参数,则Python会这样抱怨:
Traceback (most recent call last):
File "test.py", line 14, in <module>
abder.print_name()
TypeError: print_name() takes no arguments (1 given)
您当然可以将多个参数传递给该方法。 让我们以一种方法进行打印name和school的过程,如下所示:
class Person:
name = ''
school = ''
def print_information(self, name, school):
print self.name
print self.school
abder = Person()
abder.name = 'Abder'
abder.school = 'XY University'
abder.print_information(abder.name, abder.school)
尝试运行该程序-您是否获得了与以前相同的输出?
初始化
在上一节中,我们通过给它们一个空值' '初始化name和school 。 但是,还有一种更优雅的方法将变量初始化为默认值,这是初始化派上用场的地方。
初始化程序是一个名为__init__的特殊方法(该方法被认为是特殊方法,将在特殊情况下使用,这就是为什么在开头和结尾处都有双下划线的原因)。
让我们修改以前的程序以使用初始化程序。 在这种情况下,程序将如下所示:
class Person:
def __init__(self, n, s):
self.name = n
self.school = s
def print_name(self):
print self.name
def print_school(self):
print self.school
abder = Person('Abder', 'XY University')
abder.print_name()
abder.print_school()
请注意,这里的初始化程序需要有两个参数。 例如,如果我们不将n参数包含在初始化器中,则会得到以下错误:
Traceback (most recent call last):
File "test.py", line 12, in <module>
abder = Person('Abder', 'XY University')
TypeError: __init__() takes exactly 2 arguments (3 given)
因此,最重要的是,使用类,您将能够创建自己的数据类型,使用对象,您将能够创建这些数据类型的实例。 类也由属性 (属性)和方法组成,这些是我们对这些属性执行的操作。
您一直想创建的数据类型是什么? 快去做!
翻译自: https://code.tutsplus.com/tutorials/a-smooth-refresher-on-pythons-classes-and-objects--cms-25598