面向对象的编程
1.编程语言的发展:机器语言(二进制码),汇编语言,高级语言(c语言),面向对象的编程语言(C++、,Java、,Python)
2.类:对具有相同属性和方法的抽象
3.对象:具有属性(静态)和方法(动态)的实物
4.方法(3种):类方法(2种),对象方法
#类
class person():
def init(self,name,age,sex,height): #创建属性 init 构造函数
self.name = name #self:即将要出现的对象,临时指向新创建的对象
self.age = age
self.sex = sex
self.height = height
def say(self): #创建方法
print(,self.name,self.age,self.sex,self.height,“hello”)
@staticmethod #转变为静态方法,不依赖对象
def hello():
print(“hello”,self.name)
5.面向对象的三大特性:继承 封装 多态
继承:
class 子类/派生类(父类/超类/基类):
class A(object):
def a():
pass
class B(A):
def b():
pass
class C(B):
def c():
pass
class D(A,B,C)
从左到右,整体深度优先 局部广度优先(有菱形结构)
class D(A,B,C)
def b():
#覆盖/重写:当父类不能满足子类需求时,需要对其进行覆盖
class A():
def a(self,name):
print(name)
class B(A):
def a(self):
print(“子类a方法”)
b = B()
b.a() #self
6.类与类之间的关系:
继承 关联(组合、聚合) 依赖
耦合程度:继承>关联>依赖
多态:多重形态(继承中的重写覆盖)
封装
7.关联关系(组合、聚合):一个类的对象作为另一个类的属性
class student():
def init(self,name):
self.name = name
def study(self):
print(" I love Python.")
class teacher():
def init(self,stu):
self.stu = stu
def teach(self):
print(“teach %s python”%self.stu.name)
s = student(“张三”)
t = teacher(s)
t.teach()
8.依赖关系:一个类的对象作为另一个对象的方法或参数
class student():
def init(self,name):
self.name = name
def study(self):
print(" I love Python.")
class teacher():
def teach(self,stu):
print(“teach %s python”%stu.name)
s = student(“张三”)
t = teacher()
t.teach(s)
class A():
name = “张三” #类属性
def init(self,age):
self.age = age
@staticmethod
def a():
print(“类方法-静态方法”)
def aa(self):
print(“对象方法”)
print(A.name)
A.a()
a = A(18)
print(a.age)
a.aa()
class A():
__name = “张三” #类属性 _A__name
def __init__(self,age): #self._A__age
self.__age = age #对象属性
@staticmethod
def __a(): #_A__a()
print("类方法-静态方法")
def __aa(self): #self._A__aa()
print("对象方法")
def get_age(self):
return self.__name
def set_age(self,age):
if age >150 or age < 0:
print("非法年龄")
self.__age = age
@staticmethod
def get_name(self):
return A.__name
@staticmethod
def set_name(name):
if isinstance(name,str):
A.__name = name
else:
raise TypeError("类型错误,非str不能赋值")
#单下划线:本类和子类都可使用
#双下划线:只能本类中使用
class A():#object
def a(self):
print(“我是a”)
def _b(self):
print("我是_b")
def __c(self):
print("我是__c")
class B(A):
pass
#isinstance 判断是否是实例
a= A()
print(isinstance(a,object))
#issubclass 判断B是否是A的子类
print(issubclass(B,A))