目录

Python 类和对象


Python 类/对象

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

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

类就像一个对象构造函数,或者用于创建对象的"blueprint"。


创建一个类

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

示例

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

class MyClass:
  x = 5
亲自试一试 »

创建对象

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

示例

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

p1 = MyClass()
print(p1.x)
亲自试一试 »

__init__() 函数

上面的示例是最简单形式的类和对象,在现实生活应用程序中并没有真正的用处。

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

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

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

示例

创建一个名为 Person 的类,使用 __init__() 函数为姓名和年龄赋值:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("John", 36)

print(p1.name)
print(p1.age)
亲自试一试 »

笔记:这个__init__()每次使用类创建新对象时都会自动调用函数。



__str__() 函数

__str__() 函数控制当类对象表示为字符串时应返回的内容。

如果未设置 __str__() 函数,则返回对象的字符串表示形式:

示例

不使用 __str__() 函数的对象的字符串表示形式:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("John", 36)

print(p1)
亲自试一试 »

示例

使用 __str__() 函数的对象的字符串表示形式:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def __str__(self):
    return f"{self.name}({self.age})"

p1 = Person("John", 36)

print(p1)
亲自试一试 »

对象方法

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

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

示例

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

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def myfunc(self):
    print("Hello my name is " + self.name)

p1 = Person("John", 36)
p1.myfunc()
亲自试一试 »

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


自我参数

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

它不必被命名self,你可以随意称呼它,但它必须是类中任何函数的第一个参数:

示例

使用这些单词我的傻对象ABC代替自己:

class Person:
  def __init__(mysillyobject, name, age):
    mysillyobject.name = name
    mysillyobject.age = age

  def myfunc(abc):
    print("Hello my name is " + abc.name)

p1 = Person("John", 36)
p1.myfunc()
亲自试一试 »

修改对象属性

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

示例

将p1的年龄设置为40:

p1.age = 40
亲自试一试 »

删除对象属性

您可以使用以下命令删除对象的属性 del关键字:

示例

从 p1 对象中删除age属性:

del p1.age
亲自试一试 »

删除对象

您可以使用以下命令删除对象del关键字:

示例

删除p1对象:

del p1
亲自试一试 »

通过声明

class定义不能为空,但如果由于某种原因你有一个class没有内容的定义,放入pass声明以避免出现错误。

示例

class Person:
  pass
亲自试一试 »

通过练习测试一下

练习:

创建一个名为 MyClass 的类:

 MyClass:
  x = 5

开始练习