Python klasser och objekt

Python 类/对象

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

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

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

创建类

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

Exempel

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

class MyClass:
  x = 5

Kör exempel

创建对象

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

Exempel

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

p1 = MyClass()
print(p1.x)

Kör exempel

__init__() 函数

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

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

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

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

Exempel

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

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age
p1 = Person("Bill", 63)
print(p1.name)
print(p1.age)

Kör exempel

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

对象方法

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

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

Exempel

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

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age
  def myfunc(self):
    print("Hej, mitt namn är " + self.name)
p1 = Person("Bill", 63)
p1.myfunc()

Kör exempel

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

self-argumentet

self Parametern är en referens till den aktuella instansen av klassen, används för att komma åt variabler som tillhör klassen.

Det behöver inte heta self, du kan kalla den vad du vill, men den måste vara någonFörsta parametern:

Exempel

Använd orden mysillyobject och abc istället för self:

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("Bill", 63)
p1.myfunc()

Kör exempel

Ändra objektsegenskap

Du kan göra så här för att ändra objektets egenskaper:

Exempel

Sätt p1 årsålder till 40:

p1.age = 40

Kör exempel

Ta bort objektsegenskap

Du kan använda del Nyckelord för att ta bort objekts egenskaper:

Exempel

Ta bort age-egenskapen från p1-objektet:

del p1.age

Kör exempel

Ta bort objekt

Använd del Nyckelord för att ta bort objekt:

Exempel

Ta bort p1-objekt:

del p1

Kör exempel

pass-sats

Klassdefinitioner får inte vara tomma, men om du av någon anledning skriver en tom klassdefinition, använd pass-satsen för att undvika fel.

Exempel

class Person:
  pass

Kör exempel