解决某一类问题,而不是仅仅针对一个问题,可以提高代码的利用率,节省内
2.面向对象的特征
封装、继承、多态
3.类的使用完整的类格式如下:
class Person:
# 定义属性
def __init__(self,name,age):
self.name = name
self.__age = age
def __str__(self):
a=0
return a
def __del__(self):
print("执行结束")
def __new__(cls, *args, **kwargs):
super().__new__(cls)
# 定于方法
def func(self):
print("执行")
私有属性:形如__shuxing = name,原则上不可修改
私有方法:形如def __mathod(self):,原则上对象不可使用
在python中没有绝对的私有,可以通过get__shuxing获取私有方法,set__shuxing修改私有属性
具体的操作如下:
class Person:
def __init__(self,name):
self.name = name
self.__age = 20
# 获取私有方法
def __func1(self):
a = self.__age
print(a)
def get__func1(self):
self.__func1()
# 修改私有方法
def set__cs(self,vb):
self.__age = vb
print(self.__age)
sa = Person("s")
sa.set__cs(19)
sa.__func1() # 访问不到
sa.get__func1()
4.封装 私有性特征是封装的一种
封装:指的是隐藏对象的属性和具体实现细节,仅对外提供公共的访问方式。
好处:将变化隔离、便于使用、提高重用性、提高安全性
封装原则:将不需要对外提供的内容都隐藏起来、把属性都隐藏,提供公共方法对其访问。
5.类的继承性基类(原类):所有的类都继承它;object的子类,统称为派生类
1.子类重写父类class Father:
def eat(self):
print("肉类")
class Son(Father):
def eat(self):
print("青菜")
xm = Son()
xm.eat()
输出:青菜
子类的方法与父类方法相同时就相当于重写了父类的方法,得到输出是子类方法中的输出
连续继承的传递性
class Grandfather:
def eat1(self):
print("鸡蛋")
class Father(Grandfather):
def eat2(self):
print("肉类")
class Son(Father):
def eat3(self):
print("青菜")
xm = Son()
xm.eat1()
输出是:鸡蛋
要求:子类可以继承父类所有的方法和属性(父类和子类方法不相同)
当父类和子类方法相同时该如何使用父类方法呢?
第一种是super().方法 super().get__tool()
另一种是父类名称.方法 Father.get__tool(self)
区别:方法一括号内没有self,方法二必须要有;方法一只能访问上一级方法,方法二可以访问任意级父类的方法
实列:
class Grandfather:
def eat(self):
print("鸡蛋")
class Father(Grandfather):
def eat(self):
print("肉类")
class Son(Father):
def eat(self):
print("青菜")
super().eat()
Grandfather.eat(self)
xm = Son()
xm.eat()
输出结果为:
青菜 肉类 鸡蛋2.父类私有权限
对于父类中的私有方法和属性,子类可以通过公共方法访问,即在父类中定义set,get方法
获取父类私有方法也是有两种,同上
class Grandfather:
def eat(self):
print("鸡蛋")
class Father(Grandfather):
def __init__(self):
self.__age = 45
def __tool(self):
print("挖机")
def get__tool(self):
self.__tool()
def eat(self):
print("肉类")
class Son(Father):
def eat(self):
print("青菜")
super().get__tool()
Father.get__tool(self)
xm = Son()
xm.eat()



