Python 类和对象

Python 类/对象

Python 是一种面向对象的编程语言。

Python 中的几乎所有东西都是对象,拥有属性和方法。

类(Class)类似对象构造函数,或者是用于创建对象的 "蓝图"。


创建类

如需创建类,请使用 class 关键字:

使用名为 x 的属性,创建一个名为 MyClass 的类:

  1. class MyClass:
  2. x = 7
  3. print(MyClass)

创建对象

现在我们可以使用名为 myClass 的类来创建对象:

创建一个名为 p1 的对象,并打印 x 的值:

  1. class MyClass:
  2. x = 7
  3. p1 = MyClass()
  4. print(p1.x)

init() 函数

上面的例子是最简单形式的类和对象,在实际应用程序中并不真正有用。

要理解类的含义,我们必须先了解内置的 init() 函数。

所有类都有一个名为 init() 的函数,它始终在启动类时执行。

使用 init() 函数将值赋给对象属性,或者在创建对象时需要执行的其他操作:

创建名为 Person 的类,使用 init() 函数为 name 和 age 赋值:

  1. class Person:
  2. def __init__(self, name, age):
  3. self.name = name
  4. self.age = age
  5. p1 = Person("Bill", 63)
  6. print(p1.name)
  7. print(p1.age)

注释:每次使用类创建新对象时,都会自动调用 init() 函数。


对象方法

对象也可以包含方法。对象中的方法是属于该对象的函数。

让我们在 Person 类中创建方法:

插入一个打印问候语的函数,并在 p1 对象上执行它:

  1. class Person:
  2. def __init__(self, name, age):
  3. self.name = name
  4. self.age = age
  5. def myfunc(self):
  6. print("Hello my name is " + self.name)
  7. p1 = Person("Bill", 63)
  8. p1.myfunc()

提示:self 参数是对类的当前实例的引用,用于访问属于该类的变量。


self 参数

self 参数是对类的当前实例的引用,用于访问属于该类的变量。

它不必被命名为 self,您可以随意调用它,但它必须是类中任意函数的首个参数

使用单词 mysillyobject 和 abc 代替 self:

  1. class Person:
  2. def __init__(mysillyobject, name, age):
  3. mysillyobject.name = name
  4. mysillyobject.age = age
  5. def myfunc(abc):
  6. print("Hello my name is " + abc.name)
  7. p1 = Person("Bill", 63)
  8. p1.myfunc()

修改对象属性

可以这样修改对象的属性:

把 p1 的年龄设置为 40:

  1. class Person:
  2. def __init__(self, name, age):
  3. self.name = name
  4. self.age = age
  5. def myfunc(self):
  6. print("Hello my name is " + self.name)
  7. p1 = Person("Bill", 63)
  8. p1.age = 64
  9. print(p1.age)

删除对象属性

使用 del 关键字删除对象的属性:

删除 p1 对象的 age 属性:

  1. class Person:
  2. def __init__(self, name, age):
  3. self.name = name
  4. self.age = age
  5. def myfunc(self):
  6. print("Hello my name is " + self.name)
  7. p1 = Person("Bill", 63)
  8. del p1.age
  9. print(p1.age)

删除对象

使用 del 关键字删除对象:

删除 p1 对象:

  1. class Person:
  2. def __init__(self, name, age):
  3. self.name = name
  4. self.age = age
  5. def myfunc(self):
  6. print("Hello my name is " + self.name)
  7. p1 = Person("Bill", 63)
  8. del p1
  9. print(p1)

pass 语句

类定义不能为空,但是如果您处于某种原因写了无内容的类定义语句,请使用 pass 语句来避免错误。

  1. class Person:
  2. pass
  3. # having an empty class definition like this, would raise an error without the pass statement