python面向对象

一,类

类的关键词是class

复制代码
 1 class Person(object):#类的创建'''类的名称首字母必须大写"""
 2     def __init__(self,name,age):#构造方法也可以理解为init是Person的形式参数
 3         self.name=name
 4         self.age=age
 5     def show(self):#具体方法
 6         print("name{0},age{1}.format(self.name,self.age)
 7     def __del__(self):#清理方法
 8         print("end")
 9 Person(name='柏舟',age=18).show()#调用类中的具体方法
10 #调用类的具体方法的时候通常会进行实例化,类实例化的过程也是类初始化的过程
11 obj=Person(name='柏舟',age=18)
12 obj.show()==Person(name='柏舟',age=18).show()
13 print(obj.name)
14 print(obj.age)
"""在类中,方法的执行顺序是,构造方法---->具体方法---->清理方法.
复制代码

二,类的三种操作

1,封装:封装”就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体(即类);封装的目的是增强安全性和简化编程

  1,实例属性

  2,数据属性

复制代码
 1 class Animal(object):
 2     def __inif__(self,age):#age相当于类Animal的形式参数
 3         self.age=age
 4     def getage(self):
 5         return self.age
 6     def setage(self,age)#输入age的数据
 7         if age>0 and age<100:
 8             self.age=age
 9         else:
10             print("输入有误")
复制代码

  类的三种方法

    1,普通方法:可以读写

    2,特性方法:不可写,只可读,不存在形式参数

    3,静态方法:属于类,只能使用类名来进行调用,一般把数据属性用静态方法来处理

复制代码
 1 class Date:
 2     def __inif__(self,age):#构造方法
 3         self.age=age
 4     def show(self,name='dog'):#普通方法+默认参数
 5         print(itis{0},itis{1},itis{2}.format.(name,self.age,self.address)
 6     def fun(self,**kwargs):#动态参数
 7         print(kwargs)
 8     @property
 9     def into(self)#特性方法
10         print("hello")
11     @property
12     def getage(self)#特性方法
13         return self.age
14     @staticmethod#静态方法
15     def address()
16         return '地球'
17 
18 objAnimal=Animal(age=30)#对类进行实例化
19 objAnimal.show()#调用具体方法
20 objAnimal.info特性方法不用带括号
21 objAnimal.fun(name="baizhou",age=18,job='student')#调用动态参数,输出默认为字典类型
22 print(objAnimal.address())#调用静态参数并输出
23 print(objAnimal.age)#输出类的构造方法
复制代码

 

2,继承

父类(基类):被继承的类

子类(派生类):继承其他的类

子类继承父类继承了1,变量(数据属性)2,实例属性,3,方法

方法重写:当子类和父类拥有同样的方法时,子类实例化后优先考虑子类方法

复制代码
 1 class Animal(object):
 2     name='动物'#变量
 3     def__inif__(self,age,sex)#实例属性
 4         self.age=age
 5         self.sex=sex
 6     def info(self):#方法
 7         print("动物")
 8 
 9 class Cat(Animal):#Cat就是Animal的子类
10     def __inif__(self,age,sex,address):
11         self.address=address
12     Animal.__inif__(self,age,sex)#继承父类的实例参数
13     def show(self):
14         print(it is {0},it is {1},it is {2}.format(self.age,self.sex,self.address)
15     def info(self):
16         print("这是猫")
17 cat=Cat(age=5,sex=t,address=中国)
18 cat.show()
19 cat.name
20 cat.info()
复制代码

继承的顺序

  1,从下到上:

    条件1,单个继承2,子类重写

  2,从左到右

    条件:多个继承

  3,子类可以继承多个父类,但是父类要属于同一级别

  4,假设a继承b,b继承c,c继承d,那么逻辑顺序假设abcd

class A:
    def info(self):
        print("a")
class B(A):
    def info(self):
        print("b")
b=B()
b.info()

在python2中,深度优先,在python3中广度优先

3,多态

"""多态的优势具体可以总结为如下⼏点,具体为:
增加了持续的灵活性
增加了持续的额外扩展的功能"""

复制代码
class Animal(object):
    def talk(self):
        print('动物会叫')

class Cat(Animal):
    def talk(self):
        print('猫也叫')
class Dog(Animal):
    def talk(self):
        print('狗也叫')
def func(animal):
    animal.talk()

if __name__=='__main__':
    cat=Cat()
func(animal=cat)
复制代码

 

posted @   柏舟0129  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示