Python-Grundlagen - detaillierte Erklärung von Klassen, Objekten und Beispielen

Hintergrund: Beim Erstellen eines Frameworks zum Einkapseln von Funktionen mit Python + Selen wurde ich bei diesem Teil verdeckt und blockiert. Daher öffnete ich eine grundlegende Python-Spalte, um es zu ergänzen.
Zusammenfassung: Python-Klassen und -Objekte.

Sag nichts, lass mich dir zuerst jemanden vorstellen ~~~

1. Klassen erstellen und verwenden.
Zunächst fragen Sie mich, was ein Objekt ist. Ich sagte: Alles ist ein Objekt.
Ein Affe ist ein Objekt mit statischen Eigenschaften: Er wird mit zwei Ohren und einem Hintern geboren. Dynamische Attribute: Laufen, Bäume klettern, Fahren, wenn Sie nicht einverstanden sind ~~

class Dog():
    '''一次模拟小狗的简单尝试'''

    # '属性'
    def __init__(self,name,age):
        '''初始化dog的属性'''
        self.name = name
        self.age = age

    # '方法'
    def sit(self):
        '''模拟小狗蹲下'''
        print(self.name.title() + "is now sitting.")

    def roll_over(self):
        '''模拟小狗打滚'''
        print(self.name.title()+'rolled over!')

# (1)类化为对象,访问属性
a = Dog('habagou1',6).name
b = Dog('habagou2',6).age
print(a,b)
# (2)类化为对象,调用方法
a1 = Dog('habagou3',6).sit()
b1 = Dog('habagou3',6).roll_over()
print(a1)

Wie verwenden wir in tatsächlichen Projekten Klassen: Code

# 将鼠标的基础操作视为一个类
class Base():

    def __init__(self, driver, log):
        self.driver = driver
        self.log = FrameLog().log()

    # 查找界面上的元素
    def findele(self, *args):
            return self.driver.find_element(*args)

    # 点击
    def click(self, *args):
        return self.findele(*args).click()
	
    # 发送信息
    # noinspection SpellCheckingInspection
    def sendkey(self, args, value):
        self.findele(*args).send_keys(value)

2. Weisen Sie Attributen Standardwerte zu, ändern Sie Attributwerte und erhöhen Sie die Attributwerte

class Dog():
    '''一次模拟小狗的简单尝试'''

    # '属性'
    def __init__(self,name,age):
        '''初始化dog的属性'''
        self.name = name
        self.age = age
        self.a = 0

    # '方法'
    def sit(self):
        '''模拟小狗蹲下'''
        print(self.name.title() + "is now sitting.")

    def roll_over(self):
        '''模拟小狗打滚'''
        print(self.name.title()+'rolled over!')

    def man_bu(self):
        '''小狗漫步'''
        print('小狗向前走了' + str(self.a) + '步')

    def update_man_bu(self,b):
        self.a += b

# # (1)类化为对象,访问属性
# a = Dog('habagou1',6).name
# b = Dog('habagou2',6).age
# print(a,b)
# # (2)类化为对象,调用方法
# a1 = Dog('habagou3',6).sit()
# b1 = Dog('habagou3',6).roll_over()
# print(a1)

# 修改类的默认属性值,且属性值递增
a = Dog('habago4u',6)
print(a.man_bu())

a.update_man_bu(5)
a.update_man_bu(5)
a.update_man_bu(5)
print(a.man_bu())

(3) Klassenvererbung: Die zweite Klasse im Code hat 3 Punkte.

class Dog():
    '''一次模拟小狗的简单尝试'''

    # '属性'
    def __init__(self,name,age):
        '''初始化dog的属性'''
        self.name = name
        self.age = age
        self.a = 0

    # '方法'
    def sit(self):
        '''模拟小狗蹲下'''
        print(self.name.title() + "is now sitting.")

    def roll_over(self):
        '''模拟小狗打滚'''
        print(self.name.title()+'rolled over!')

    def man_bu(self):
        '''小狗漫步'''
        print('小狗向前走了' + str(self.a) + '步')

    def update_man_bu(self,b):
        self.a += b

class huangsegougou(Dog):
    '''这是黄色狗狗'''
    
    # (1)这两行代码中的,super函数让黄色狗狗继承了父类dog的所有属性
    def __init__(self,name,age):
        super(huangsegougou, self).__init__(name,age)
        # (2)将下面的wangcai类的实例直接放在这,只要我调用黄色色狗狗这个类,我的旺财就会“吼一声”
        self.wangcai = Wangcai()
        
    # (3)通过覆盖方法名,直接重写了父类的方法。
    def man_bu(self):
        print('黄色狗狗走了' + str(self.a) + '步')
        
class Wangcai:
    
    def __init__(self):
        print('旺财吼了一声,声如雷!')

4. Importierte Klassen Mit
importierten Klassen können wir uns mehr auf die übergeordnete Logik des Hauptprogramms konzentrieren. Das Projekt konzentriert sich hauptsächlich auf die Realisierung der Geschäftslogik.
(1) Die base.py im Projekt definiert viele Basisklassen, die alle importiert werden: vom Basisimport *
(2) Eine Klasse kann mehrere Klassen erben. , Die zu vererbenden Klassen werden durch Kommas getrennt. Auf die übergeordnete Klasse folgt die übergeordnete Klasse in den Klammern nach dem Klassennamen. Es kann mehrere geben. Wenn die Methode der aufzurufenden übergeordneten Klasse unterschiedlich ist, ist dies der Fall ist das Aufrufen der Methode einer bestimmten übergeordneten Klasse. Wenn sich die aufrufende Methode der übergeordneten Klasse in beiden übergeordneten Klassen befindet, befolgen Sie das Prinzip "Wer zuerst kommt, mahlt zuerst".

class Dituguanli(UnitBase,Base):

    # 如何确保是Base类中的self.find_element()跟unittest中的是一类。
    def test_dianjixinwen(self):
        self.findele(By.XPATH,"//*[text()='新闻']")
        print('跑通了')

Ich denke du magst

Origin blog.csdn.net/weixin_45451320/article/details/112795060
Empfohlen
Rangfolge