python基础_类、对象、实例详解

背景:因为python+selenium搭建框架封装函数的过程中,发现自己对这块模糊了,阻塞了,所以特开个python基础栏目,以做补充。
摘要:python 的 类和对象。

啥也不说了,先给你介绍个对象~~~

1、创建类、使用类
首先,你问我对象是啥子?我说:一切皆可对象。
猴子是一个对象,静态属性:它自己天生就带的,2个耳朵,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
今日推荐