面向对象中类,方法和三大特性

1、如何创建类
class 类名:
pass

2、创建方法
构造方法,__init__(self,arg)
obj = 类('a1')
普通方法
obj = 类(‘xxx’)
obj.普通方法名()

3、面向对象三大特性之一:封装

class Bar:
def __init__(self, n,a):
self.name = n
self.age = a
self.xue = 'o'

b1 = Bar('alex', 123)

b2 = Bar('eric', 456)


4、适用场景:
如果多个函数中有一些相同参数时,转换成面向对象

class DataBaseHelper:

def __init__(self, ip, port, username, pwd):
self.ip = ip
self.port = port
self.username = username
self.pwd = pwd

def add(self,content):
# 利用self中封装的用户名、密码等 链接数据
print('content')
# 关闭数据链接

def delete(self,content):
# 利用self中封装的用户名、密码等 链接数据
print('content')
# 关闭数据链接

def update(self,content):
# 利用self中封装的用户名、密码等 链接数据
print('content')
# 关闭数据链接

def get(self,content):
# 利用self中封装的用户名、密码等 链接数据
print('content')
# 关闭数据链接

s1 = DataBaseHelper('1.1.1.1',3306, 'alex', 'sb')

# 创建类,对类进行封装
class bar:
    # 构造方法
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def foo(self, arg):
        print(self.name, self.age, arg)

obj = bar("小明", 18)
obj.foo("这是个类")

 

 

5、面向对象三大特性之二:继承

1、继承

class 父类:
pass

class 子类(父类):
pass

2、重写
防止执行父类中的方法

3、self永远是执行改方法的调用者

4、
super(子类, self).父类中的方法(...)
父类名.父类中的方法(self,...)

# 父类
class F:
    def f1(self):
        print("F.f1")

    def f2(self):
        print("F.f2")

# 子类 ,子类继承父类
class S(F):
    def s1(self):
        print("S.s1")

    # 不继承父类方法时,子类重写方法
    def f2(self):
        print("S.f2")
        super(S, self).f2()  # 执行父类中的方法
        F.f2(self)   # 第二种执行父类中的方法


inherit = S()

# 子类可以调用父类
inherit.f1()
inherit.s1()
inherit.f2()

 


5、Python中支持多继承

a. 左侧优先
b. 一条道走到黑
c. 同一个根时,根最后执行

class F0:
    def __init__(self):
        print("F0.init")

class F1(F0):
    def __init__(self):
        print("F1.init")
        F0.__init__(self)

    def f1(self):
        print("F1.f1")
        self.f2()  # F2.f2 因为self是子类的对象,所以从子类开始找方法

    def f2(self):
        print("F1.f2")

class F2:
    def f2(self):
        print("F2.f2")

# python中可以多继承,顺序从左到右依次找父类,如果有相同根类,则根类最后执行
class S0(F2,F1):
    pass


Multiple_inherit = S0()  # 创建对象,先执行init方法

Multiple_inherit.f1()

 


6、面向对象三大特性之三:多态
====> 原生多态

# Java
string v = 'alex'

def func(string arg):
print(arg)

func('alex')
func(123)

# Python
v = 'alex'

def func(arg):
print(arg)


func(1)
func('alex')

posted @ 2024-12-09 16:49  GDquicksand  阅读(2)  评论(0编辑  收藏  举报