1.什么是面向对象编程?
-以前使用函数
-类 + 对象
2.什么是类,什么是对象,又有什么关系?
举个栗子:
class 类:
def 函数1():
pass
def 函数2():
pass
#obj是对象、实例化的过程
obj = 类()
obj.函数1()
=========面向对象不好?========
有时候,函数编程可以实现,但是比较麻烦。
面向对象非常简单的就能实现。
3.什么时候适用面向对象?
—如果多个函数须传入多个共同的参数时
—根据一个模板创建某些东西
—应用场景
举个栗子:
class SSH:
def __init__(self,host,port,pwd,username):
self.host = host
...
def connection(self):
#去创建连接
self.conn = 和服务器创建的连接对象()
def close():
#关闭连接
self.conn.关闭
def upload(self):
self.conn 使用连接上传文件
def cmd(self):
self.conn 使用连接执行命令
obj=SSH(....)
obj.connection()
obj.upload()
obj.close()
def upload():
#连接服务器
#上传文件
#关闭
def cmd():
#连接服务器
#执行命令
#关闭
def upload_cmd():
#连接服务器
#上传文件
#执行命令
#关闭
4.self是什么
self就是调用当前方法的对象
-静态字段使用场景,每个对象中保存相同的东西时,可以使用静态字段
举个栗子
class Foo:
#公有属性/静态字段
country = "中国"
def __init__(self,name,count):
#普通属性/普通字段
self.NAME = name
self.COUNT = count
def bar(self):
pass
obj1=Foo('江苏',1000000)
obj1.bar()
obj2=Foo('浙江',222222)
obj2.bar()
5.封装
- 类中封装了属性和方法
- 对象中封装了普通属性的值
class F1:
def __init__(self,n):
self.N = n
print('F1')
class F2:
def __init__(self,arg1):
self.a = arg1
print('F2')
class F3:
def __init__(self,arg2):
self.b = arg2
print('F3')
o1 = F1('alex')
o2 = F2(o1)
o3 = F3(o2)
######## 输出Alex ########
o3.b.a.N
继承:
class F1:
def __init__(self):
print("F1")
def a1(self):
print("F1a1")
class F2(F1):
def __init__(self):
print("F2")
def a1(self):
print("F2a1")
class F3(F2):
def __init__(self):
print("F3")
def a1(self):
print("F3a1")
obj = F3()
obj = a1()
多态(多种形态):
python默认支持多态
6.
属性/字段:
普通属性(保存在对象中)
静态属性(保存在类中)
方法:
普通方法(保存在类中,调用者就是对象,至少有一个self参数)
静态方法(保存在类中,调用者是类,无需创建对象,可以有任意个参数):
和函数使用一样。
class F1:
@staticmethod
def a1():
print('alex')
F1.a1()