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.面向对象公有和私有成员,在编写和调用时有哪些不同

  • 公有成员:可以在外部调用  
  • 私有成员:定义时加‘__’,只能在内部调用  
 
原文地址:https://www.cnblogs.com/bilx/p/11382391.html