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)
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()
3.面向对象的属性
class Foo(object): @property def func1(self): return 1 @property def func2(self): return 9 obj = Foo() print(obj.func1) print(obj.func2)
4.简述静态方法和类方法的区别
- 1.编写时
- 静态方法:不需要加self @ staticmethod,参数可有可无,括号内直接可以放需要传的参数
- 类方法:@ classmethod,cls默认参数,至少有一个参数
- 实例方法:普通方法,调用对象封装的值
- 2.调用时:
- 静态方法和类方法:类名.方法名()/对象.方法名()
- 实例方法:对象名.方法名()
- 应用场景:
- 如果在方法内部不会用到对象相关的数据是,就可以用静态方法或类方法。需要用到对象相关数据时,才用实例方法。
- 如果在方法中需要用当前类是,类方法默认传参是当前类,可以用类方法。
5.面向对象的方法中定义时无需给参数
- 定义时不需要写参数:静态方法
6.面向对象公有和私有成员,在编写和调用时有哪些不同
- 公有成员:可以在外部调用
- 私有成员:定义时加‘__’,只能在内部调用