zoukankan      html  css  js  c++  java
  • python学习——面向对象成员

    1.面向对象的变量分为哪几种

    • 面向对象的变量:类变量、实例变量
      • 类变量(静态字段):
        • 公有类变量(静态字段)
        • 私有类变量(私有静态字段)
      • 实例变量(字段)
        • 公有实例变量(字段)
        • 私有实例变量(私有字段)
    class Foo:
        country = '中国'  # 类变量
    
        def __init__(self,name):
            self.name = name    # 实例变量
    
    obj1 = Foo('王小明')
    obj2 = Foo('小樱')
    
    Foo.country = '法国'
    print(obj1.country)
    print(obj2.country)
    
    obj1.name = '大头'
    print(obj1.name)
    View Code

    2.面向对象中方法有哪几种

    • 实例方法:使用对象封装__init__方法的值,使用实例方法
    • 静态方法:方法中使用对象中封装的值,使用静态方法
    • 类方法:在方法中需要用到当前类是,使用类方法
    3-1.实例方法:
    class Foo(object):
    
        def __init__(self,name):
            self.name = name
    
        def func(self):
            print(self.name)
    
    obj = Foo('爱丽丝')
    obj.func()
    
    3-2.静态方法和类方法:
    class Foo(object):
    
        @staticmethod
        def static():
            print('666')
    
        @classmethod
        def show(cls):
            print(cls)
    
    Foo.static()
    obj = Foo()
    obj.static()
    Foo.show()
    View Code

    3.面向对象的属性

    class Foo(object):
    
        @property
        def func1(self):
            return 1
    
        @property
        def func2(self):
            return 9
    
    obj = Foo()
    print(obj.func1)
    print(obj.func2)
    View Code

    4.简述静态方法和类方法的区别

    • 1.编写时
      • 静态方法:不需要加self @ staticmethod,参数可有可无,括号内直接可以放需要传的参数
      • 类方法:@ classmethod,cls默认参数,至少有一个参数
      • 实例方法:普通方法,调用对象封装的值
    • 2.调用时:
      • 静态方法和类方法:类名.方法名()/对象.方法名()
      • 实例方法:对象名.方法名()  
    • 应用场景:
      • 如果在方法内部不会用到对象相关的数据是,就可以用静态方法或类方法。需要用到对象相关数据时,才用实例方法。      
      • 如果在方法中需要用当前类是,类方法默认传参是当前类,可以用类方法。  

    5.面向对象的方法中定义时无需给参数

    • 定义时不需要写参数:静态方法  

    6.面向对象公有和私有成员,在编写和调用时有哪些不同

    • 公有成员:可以在外部调用  
    • 私有成员:定义时加‘__’,只能在内部调用  
     
  • 相关阅读:
    [POJ 2777]Count Color 线段树+二进制状态压缩
    [git] git push问题 解决 Updates were rejected because the tip of your current branch is behind 和每次输入用户名和密码
    [hdu-5795]A Simple Nim 博弈 尼姆博弈 SG函数打表找规律
    [codeforces1284E]New Year and Castle Construction 几何
    Spring事务相关接口以及实现类
    MyBatis与Spring整合
    实现一个简易RPC
    使用CAS实现一个超时锁
    阻塞队列
    Java中的Lock接口
  • 原文地址:https://www.cnblogs.com/bilx/p/11382391.html
Copyright © 2011-2022 走看看