面向对象转载

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')


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


    1、继承
        
        class 父类:
            pass
            
        class 子类(父类):
            pass
            
    2、重写
        防止执行父类中的方法
        
    3、self永远是执行改方法的调用者


    4、
       super(子类, self).父类中的方法(...)
       父类名.父类中的方法(self,...)
       
       
       
    5、Python中支持多继承


        a. 左侧优先
        b. 一条道走到黑
        c. 同一个根时,根最后执行
    
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')


    
 
==================================================================
    
练习:
    
    class Person:
        
        def __init__(self,n,a,g,f):
            
            self.name = n
            self.age =a 
            self.gender =g
            self.fight = f 


                
    role_list = []
    
    y_n = input('是否创建角色?')
    if y_n == 'y':
        name = input('请输入名称:')
        age = input('请输入名称:')
        ...
        role_list.append(Person(....))
        
    # role_list,1,2 
        
        
======================================================= 面向对象中高级 ========================================================




class Foo:


    def __init__(self, name):
        # 普通字段
        self.name = name


    # 普通方法
    def show(self):
        print(self.name)


obj = Foo('alex')
obj.name
obj.show()




类成员:
    # 字段
        - 普通字段,保存在对象中,执行只能通过对象访问
        - 静态字段,保存在类中,  执行 可以通过对象访问 也可以通过类访问
        
    # 方法
        - 普通方法,保存在类中,由对象来调用,self=》对象
        - 静态方法,保存在类中,由类直接调用
        -   类方法,保存在类中,由类直接调用,cls=》当前类


    ######## 应用场景:
        如果对象中需要保存一些值,执行某功能时,需要使用对象中的值 -> 普通方法
        不需要任何对象中的值,静态方法
        
        
    # 属性,特性
        - 不伦不类
        
    
    
    
    
中国的所有省份,用面向对象知识表示?


class Province:
    # 静态字段,属于类
    country =  '中国'
    
    
    def __init__(self, name):
        # 普通字段,属于对象
        self.name = name
        
henan = Province('河南')
henan.name
henan.name = "河南南"




#hebei = Province('河北')


# Province.country
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值