클래스, 객체 및 예제에 대한 Python 기본 사항에 대한 자세한 설명

배경 : python + selenium으로 함수를 캡슐화하는 프레임 워크를 구축하는 과정에서이 부분이 가려지고 막혔 기 때문에이를 보완하기 위해 기본 파이썬 열을 열었습니다.
요약 : Python 클래스 및 객체.

아무 말도 말고 먼저 소개해 드릴게요 ~~~

1. 클래스를 만들고 사용하기
먼저 객체가 무엇인지 물어 보시나요? 나는 말했다 : 모든 것이 객체입니다.
원숭이는 정적 인 속성을 가진 물체입니다. 그것은 두 개의 귀와 하나의 엉덩이로 태어납니다. 동적 속성 : 달리기, 나무 등반, 서로 동의하지 않으면 운전 ~~

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)

실제 프로젝트에서 클래스를 사용하는 방법 : 코드

# 将鼠标的基础操作视为一个类
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. 속성에 기본값 할당, 속성 값 수정 및 속성 값 증가

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) 클래스 상속 : 코드의 두 번째 클래스에는 3 점이 있습니다.

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. 임포트 클래스
임포트 클래스를 통해 메인 프로그램의 상위 로직에 더욱 집중할 수 있으며, 프로젝트는 주로 비즈니스 로직의 실현에 초점을 맞추고 있습니다.
(1) 프로젝트의 base.py는 많은 기본 클래스를 정의합니다. 모두 가져 오는 기본 클래스 : from base import *
(2) 하나의 클래스는 여러 클래스를 상속 할 수 있습니다. , 상속 될 클래스는 쉼표로 구분되며, 상위 클래스 뒤에는 클래스 이름 뒤의 괄호 안의 상위 클래스가오고, 둘 이상이 될 수 있습니다. 호출 할 상위 클래스의 메소드가 다른 경우 특정 부모 클래스의 메서드를 호출하는 것입니다. 부모 클래스의 호출 메서드가 두 부모 클래스에 모두있는 경우 선착순 원칙을 따릅니다.

class Dituguanli(UnitBase,Base):

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

추천

출처blog.csdn.net/weixin_45451320/article/details/112795060