类 Class的简单了解

类 Class的简单了解

原创:牛津小马哥Python后端工程师小李哥。


(官方文档:类提供了一种组合数据和功能的方法。创建一个新类意味着创建一个新类型 的对象,从而允许创建一个该类型的新实例 。每个类的实例可以拥有保存自己状态的属性。一个类的实例也可以有改变自己状态的(定义在类中的)方法。)

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


类的定义与实例的创建

在Python中,类通过 class 关键字定义,类名首字母大写,Python3中类基本都会继承于object类,语法格式如下,创建一个Students类:

class Student(object):
  pass

接下来创建两个实例A和B:

A = Student()
B = Student()
print(A, B)
<__main__.Student object at 0x000000DDC7302668> <__main__.Student object at 0x000000DDC7302588>


Python类中的实例属性与类属性

实例属性:各实例单独拥有,用来区分不同的实例;

A.name = 'jack'
B.Name = 'tom'
print(A.name, B.Name)
jack tom

当然,每次需要实例单独创建属性会比较麻烦,我们可以在创建实例前给类一个初始化的属性,使每次创建新实例时都会自动拥有实例属性:

class Student(object):
    def __init__(self, name):
        self.name = name

__init__(self):进行初始化,第一个参数self表实例本身,name为属性参数。即相当于把里面定义的属性都绑定到新创建的实例上,使其作为实例本身的属性进行使用。

创建实例时传入属性参数:

A = Student('jack')
B = Student('tom')
print(A.name, B.name)
jack tom

类属性:绑定在类上,且所有实例访问的都是同一个。

class Student(object):
    identity = 'student'
    def __init__(self, name):
        self.name = name

A = Student('jack')
print(A.identity)
student

如果我们把实例A重新绑定一个与类属性相同名字的属性时(如:A.identity = ‘teacher’),那么会覆盖掉类属性,结果为 teacher。因为实例属性的访问优先级比类属性高。


类的实例方法(数据封装)

使用 def来定义方法,与一般函数定义不同,类方法必须第一个参数为 self,代表的是类的实例,其他参数和普通函数是完全一样。

class Student(object):
    identity = 'student'
    def __init__(self, name):
        self.name = name

    def get_name(self):
        return 'A student name is %s' % self.name

A = Student('jack')
print(A.get_name())
A student name is jack

get_name:即为实例方法,把数据和逻辑封装起来,可供实例直接进行使用。同时为类增加了一个新方法。


本篇原创:小马哥团队小哥哥☺~感谢阅读!

编辑于 2019-12-27 15:28