Heim  >  Artikel  >  Backend-Entwicklung  >  Ein Beispiel-Tutorial zum Erstellen einer einfachen Klasse

Ein Beispiel-Tutorial zum Erstellen einer einfachen Klasse

零下一度
零下一度Original
2017-06-25 09:55:232202Durchsuche

Erstellen Sie eine einfache Klasse

Jede aus der Dog-Klasse erstellte Instanzspalte speichert den Namen und das Alter. Wir haben jedem Welpen die Fähigkeit gegeben, in die Hocke zu gehen (sit()) und zu rollen (roll_over()):

 1 class Dog(): 2     """一次模拟小狗的简单尝试""" 3     def __init__(self, name, age): 4         """初始化属性name和age""" 5         self.name = name 6         self.age = age 7     def sit(self): 8         """模拟小狗被命令时蹲下""" 9         print(self.name.title() + "now is sitting.")10     def roll_over(self):11         """模拟小狗被命令时打滚"""12         print(self.name.title() + "rolled over!")13 my_dog = Dog('tom','3')14 print("my dog name is " + my_dog.name.title() )
Gemäß der Konvention, in Python, Vornamen mit Großbuchstaben beziehen sich auf Klassen: Funktionen in einer Klasse werden als Methoden
Methode __init__() mit 2 Unterstrichen am Anfang und Ende bezeichnet. Dies ist eine Konvention, die entwickelt wurde, um Python zu vermeiden. Es gibt einen Namenskonflikt zwischen die Standardmethode und die normale Methode. Wir definieren die Methode __init__() so, dass sie drei formale Parameter enthält: selbst, Name und Alter. Bei der Definition dieser Methode ist der -Parameter self wesentlich und muss vor anderen formalen Parametern stehen. Warum muss der formale Parameter self in der Methodendefinition enthalten sein? Denn wenn Python diese __init__()-Methode aufruft, um eine Dog-Instanz zu erstellen, wird der eigentliche Parameter self automatisch übergeben. Beiden Variablen self_name und self_age wird das Präfix self vorangestellt. Variablen mit dem Präfix self stehen allen Methoden in der Klasse zur Verfügung. Wir können auf diese Variablen auch über jede Instanzspalte der Klasse zugreifen. Solche Variablen, auf die über eine Instanz zugegriffen werden kann, werden Eigenschaften genannt.
Wenn Sie in Python2.X eine Klasse erstellen, müssen Sie (Objekt) nach den Klammern hinzufügen.

Zugriff auf Eigenschaften

Um mit dem obigen Beispiel fortzufahren, erstellt die Methode __init__() eine Instanz, die einen bestimmten Welpen darstellt, und setzt sie auf den von uns bereitgestellten Wert Die Attribute Name und Alter sowie die Methode __init__() enthalten nicht explizit eine Return-Anweisung, aber Python gibt automatisch ein Beispiel zurück, das diesen Welpen darstellt. Wir speichern dieses Beispiel in der Variablen my_dog.
class Dog():"""一次模拟小狗的简单尝试"""def __init__(self, name, age):"""初始化属性name和age"""self.name = name
        self.age = agedef sit(self):"""模拟小狗被命令时蹲下"""print(self.name.title() + " now is sitting.")def roll_over(self):"""模拟小狗被命令时打滚"""print(self.name.title() + " rolled over!")
my_dog = Dog('tom',3)print(my_dog.name)print(my_dog.age)#运行结果tom3

Aufrufmethode

class Dog():"""一次模拟小狗的简单尝试"""def __init__(self, name, age):"""初始化属性name和age"""self.name = name
        self.age = agedef sit(self):"""模拟小狗被命令时蹲下"""print(self.name.title() + " now is sitting.")def roll_over(self):"""模拟小狗被命令时打滚"""print(self.name.title() + " rolled over!")
my_dog = Dog('tom',3)
my_dog.sit()
my_dog.roll_over()#运行结果Tom now is sitting.
Tom rolled over!

Laut Hund Klasse Nach dem Erstellen einer Instanz können Sie die Punktnotation verwenden, um jede von Dog definierte Methode aufzurufen

Mehrere Instanzen erstellen

class Dog():"""一次模拟小狗的简单尝试"""def __init__(self, name, age):"""初始化属性name和age"""self.name = name
        self.age = agedef sit(self):"""模拟小狗被命令时蹲下"""print(self.name.title() + " now is sitting.")def roll_over(self):"""模拟小狗被命令时打滚"""print(self.name.title() + " rolled over!")
my_dog = Dog('tom',3)
your_dog = Dog('Mei',2)print("My dog name is " + my_dog.name.title())print("Your dog name is " + your_dog.name.title())#运行结果My dog name is Tom
Your dog name is Mei

Sie können je nach Bedarf beliebig viele Instanzen basierend auf der Klasse erstellen.

Klassen und Instanzen verwenden

Eigenschaften Standardwerte zuweisen

Jede Eigenschaft in einer Klasse muss einen Anfangsbuchstaben haben value , auch wenn der Wert 0 oder eine leere Zeichenfolge ist, ist es in einigen Fällen, z. B. beim Festlegen eines Standardwerts, in Ordnung, diesen Anfangswert in der Methode __init__() anzugeben. Wenn Sie dies für ein Attribut tun, ist dies der Fall Keine Notwendigkeit. Enthält formale Parameter, die die Initialisierung ermöglichen.
class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_name
my_car = Car('audi', 'a4', '2017')print(my_car.model)print(my_car.get_descri_name())#运行结果a42017 a4 audi

Ändern Sie den Attributwert direkt

class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_name
my_car = Car('audi', 'a4', '2017')print(my_car.get_descri_name())
my_car.year = 2016print(my_car.get_descri_name())#运行结果2017 a4 audi2016 a4 audi

Ändern Sie ihn über Methoden

class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_namedef update(self, mile):"""更新里程值"""if mile > self.odometer_reading:
            self.odometer_reading = mileelse:print("You can't roll back an odometer")def increment_odometer(self,mile):"""增加里程"""self.odometer_reading += miledef read_odometer(self):"""打印汽车的里程"""print("This car has " + str(self.odometer_reading) + " miles on it.")
my_car = Car('audi', 'a4', '2017')
my_car.read_odometer()
my_car.odometer_reading = 10    #直接修改里程值my_car.update(200)     #通过方法修改里程my_car.read_odometer()
my_car.increment_odometer(10)
my_car.read_odometer()#运行结果This car has 100 miles on it.
This car has 200 miles on it.
This car has 210 miles on it.

Vererbung

Wenn wir möchten, dass eine andere Klasse die Attribute einer anderen Klasse erbt, können wir das tun Fügen Sie den Namen der Klasse in Klammern hinzu, zum Beispiel:

class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_namedef update(self, mile):"""更新里程值"""if mile > self.odometer_reading:
            self.odometer_reading = mileelse:print("You can't roll back an odometer")def increment_odometer(self,mile):"""增加里程"""self.odometer_reading += miledef read_odometer(self):"""打印汽车的里程"""print("This car has " + str(self.odometer_reading) + " miles on it.")class ElectricCar(Car):"""电动汽车的独特特性"""def __init__(self, make, model, year):"""初始化父类的属性"""super().__init__(make, model, year)
my_tesla = ElectricCar('tesla', 'model s', '2016')print(my_tesla.get_descri_name())#运行结果2016 model s tesla

Um die Attribute der übergeordneten Klasse zu erben, muss auch eine spezielle Funktion super( ) um Python zu helfen Die Ehemannklasse und die Unterklasse sind verknüpft.

In Python2. Klassendefinitionsattribute und -methoden Nachdem Sie eine Klasse eine andere Klasse erben lassen, können Sie neue Attribute und Methoden hinzufügen, die die Unterklasse und die übergeordnete Klasse unterscheiden.
Instanzen als Attribute verwenden
class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_namedef update(self, mile):"""更新里程值"""if mile > self.odometer_reading:
            self.odometer_reading = mileelse:print("You can't roll back an odometer")def increment_odometer(self,mile):"""增加里程"""self.odometer_reading += miledef read_odometer(self):"""打印汽车的里程"""print("This car has " + str(self.odometer_reading) + " miles on it.")class Battery():"""一次模拟电动汽车"""def __init__(self,battery_size=70):"""初始化电瓶的属性"""self.battery_size = battery_sizedef describe_battery(self):"""打印一条描述电瓶容量的消息"""print("This car has a " + str(self.battery_size) + "-kwh battery.")class ElectricCar(Car):"""电动汽车的独特特性"""def __init__(self, make, model, year):"""初始化父类的属性"""super().__init__(make, model, year)
        self.battery = Battery()
my_tesla = ElectricCar('tesla', 'model s', '2016')print(my_tesla.get_descri_name())
my_tesla.battery.describe_battery()#运行结果2016 model s tesla
This car has a 70-kwh battery.
Klasse importieren

Einzelne oder mehrere Klassen importieren

Eine Datei car.py
Eine weitere Datei my_car.py erstellen und eine Klasse importieren
class Car():"""一次模拟汽车的简单尝试"""def __init__(self, make, model, year):"""汽车的初始化"""self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 100def get_descri_name(self):"""描述汽车"""long_name = str(self.year) + ' ' + self.model + ' ' + self.makereturn long_namedef update(self, mile):"""更新里程值"""if mile > self.odometer_reading:
            self.odometer_reading = mileelse:print("You can't roll back an odometer")def increment_odometer(self,mile):"""增加里程"""self.odometer_reading += miledef read_odometer(self):"""打印汽车的里程"""print("This car has " + str(self.odometer_reading) + " miles on it.")class Battery():"""一次模拟电动汽车"""def __init__(self,battery_size=70):"""初始化电瓶的属性"""self.battery_size = battery_sizedef describe_battery(self):"""打印一条描述电瓶容量的消息"""print("This car has a " + str(self.battery_size) + "-kwh battery.")class ElectricCar(Car):"""电动汽车的独特特性"""def __init__(self, make, model, year):"""初始化父类的属性"""super().__init__(make, model, year)
        self.battery = Battery()

Mehrere Klassen können in einem Modul gespeichert werden, sodass mehrere Klassen gleichzeitig importiert werden können
from  car import Car
my_car = Car('audi', 'a4', '2017')

Importieren das gesamte Modul
from car import Car,Battery,ElectricCar
my_tesla = ElectricCar('tesla', 'model s', '2016')print(my_tesla.get_descri_name())
my_tesla.battery.describe_battery()

Alle Klassen importieren
import car     #导入整个模块的时候,需要使用句点表示法访问需要的类
my_tesla = car.ElectricCar('tesla', 'model s', '2016')print(my_tesla.battery)

from car import *    #导入所有的类

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

Das obige ist der detaillierte Inhalt vonEin Beispiel-Tutorial zum Erstellen einer einfachen Klasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn