面向对象及函数式常见问题
面向对象常见问题
1、概述如何理解面向对象以及面向对象的特点
万物皆对象,面向对象编程是一种编程思想,是编程世界向现实世界的一种延申,也就是说万物皆可描述,我们用编程语言也可描述世界万物。类就是面向对象的一种表现形式
2、类中的私有变量是否能访问,如果能,那么如何访问
能,在 python 中会将私有变量改名为,私有变量加上_类名,
3、python 中的类有多少方法种类,他们有什么区别
实例方法:实例方法可直接被实例调用,类调用实例方法时需要传入类
class Person:
x = 8
def eat(self):
print('eat')
per = Person()
per.eat()
Person.eat(Person)
结果:
eat
eat
如果在类调用实例方法时,不传入类时,会报错
类方法:类方法可以被类直接调用,类方法可以操作类变量
class Person:
x = 8
@classmethod
def run(cls):
print(cls.x)
def eat(self):
print('eat')
per = Person()
per.eat()
Person.run()
per.run()
print(per.x)
结果:
eat
8
8
8
静态方法:脱离了类,不需要传入参数,能够被类调用,可用做工具类的实现
class Person:
x = 8
@classmethod
def run(cls):
print(cls.x)
def eat(self):
print('eat')
@staticmethod
def say():
print('say')
per = Person()
per.say()
Person.say()
结果:
say
say
私有方法:实例方法的一种,不能直接被访问,需要使用_类名__eat的形式调用
class Person:
def __eat(self):
print('eat')
per = Person()
print(per.__dir__())
per._Person__eat() //
结果:
eat
函数式编程常见问题
1、用函数实现过滤掉集合 list1 = ['', 'hello',None, 'python' ] 中的空格和空值
list1 = ['', 'hello',None, 'python' ]
def get_value(str1):
if str1!=''or str1!=None:
return str1
a = list(filter(get_value,list1))
print(a) //['hello', 'python']
或者使用lambda表达式的方式:
a = list(filter(lambda x: x!='' and x!=None, list1))
2、用函数方法实现计算集合 list1 = [1,2,3,4,5] 中,所有元素的和
from functools import reduce
b = reduce(lambda x,y:x+y,list2)
print(b) //15
注意:python3 中 reduce 函数被放置在 functools 中,需要引入 reduce 函数

© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧