面向对象

1.简述面向对象三大特性并用示列解释说明
封装:把具有相同属性和功能的内容封装在一个对象中

继承:子类可以自动拥有父类中除了私有属性外的其他所有内容

多态:同一个对象.可以拥有多种形态.python原生自带多态性

2.面向变量分为哪几种?并用示列说明区别?

成员变量:(实例变量)(字段column) (重点)
def __init__(self):
self.属性
类变量:(静态变量) 直接写在类中的. 共享出去的.
class 类:
变量

3.面向对象中方法有哪几种?并用示咧说明区别?

成员(实例)方法: 加了self的.调用的时候。必须用对象去访问.(重点)
class computer:
def play(self):
print("我的电脑可以玩会")
类方法,: 当方法需要传递类名的时候.需要类方法.规范规则: 在上方加 @ classmethod
class computer:
def play(self):
print('我的电脑可以玩会')

@staticmethod
def fare():
print('我的电脑非常牛逼,可以煎鸡蛋')
@classmethod
def cal(cls,a,b):
print(cls)
return a+b
print(computer.cal(1,2))#此时会自动把类名传递给类方法的第一个参数
静态方法,: 当你的方法不需要传递当前类的对象的时候。 语法规则: 在方法上面加 @ staticmethod
@staticmethod
def fare():
print("我的电脑非常牛逼,可以煎鸡蛋")
4.面向对象的属性有什么?并用示列说明?
方法伪装成一个属性,代码上没有什么提升,只是更合理.




5.简述静态方法和类方法的区别
类方法, 当方法需要传递类名的时候.需要类方法.规范规则: 在上方加 @ classmethod
class computer:
def play(self):
print('我的电脑可以玩会')

@staticmethod
def fare():
print('我的电脑非常牛逼,可以煎鸡蛋')
@classmethod
def cal(cls,a,b):
print(cls)
return a+b
print(computer.cal(1,2))
静态方法, 当你的方法不需要传递当前类的对象的时候。 语法规则: 在方法上面加 @ staticmethod
class computer:
def play(self):
print('我的电脑可以玩会')

@staticmethod
def fare():
print('我的电脑非常牛逼,可以煎鸡蛋')

@classmethod
def cal(cls, a, b):
print(cls)
return a + b

print(computer.cal(1, 2))
6.面向对象的方法中那个无需传参数
静态方法不需要传参数

7.面向对象中公有和私有成员,在编写和调用时有哪些不同?
公有是公开的 所有人可见
私有是私人的只有自己可见其他人看不到
# 8.看代码写结果;禁止运行
class Foo(object):
a1 = 11
a2 = 12
def __init__(self):
self.a1 = 1
obj = Foo()
print(obj.a1)
print(obj.a2)


结果 1 12
9.看代码写每个打印结果:[禁止运行,如果报错可认为程序沪继续向后执行]
class Foo(object):
a1 = 11

def __init__(self,num):
self.a2 = num

obj = Foo(999)
print(obj.a2)
print(obj.a1)

print(Foo.a1)
print(Foo.a2)

结果为999 11 11 none
10.看嗲吗写每一个打印结果:[禁止运行,如果报错可认为程序会继续向后执行]
class Foo(object):

a1 = 1
__a2 = 2

def __init__(self,num):
self.num = num
self.__salary =1000

def get_data(self):
print(self.num+self.a1)

obj = Foo(666)

print(obj.num)
print(obj.a1)
print(obj.__salary)
print(obj.__a2)
print(obj.a1)
print(Foo.__a2)


结果 666 1 none none 1 none

11.看代码写结果:[禁止运行,如果报错可认为程序会继续向后执行]
class Foo(object):

a1 = 1
__a2 = 2

def __init__(self,num):
self.num = num
self.__salary =1000

def get_data(self):
print(self.num+self.a1)
obj1 = Foo(666)
obj2 = Foo(999)
print(obj1.num)
print(obj1.a1)

obj1.num = 18
obj1.a1 = 99

print(obj1.num)
print(obj1.a1)

print(obj2.a1)
print(obj2.num + Foo.a1)
print(obj2.num + obj1.a1)


结果为 666.1 18 99 1 1000 1098

12.看代码写结果:[禁止运行,如果报错可认为程序会继续执行]
class Foo(object):
hobby = "大保健"
def __init__(self,num):
self.num = num
self.__salary = 1000

def f1():
print(Foo.hobby)
def f2():
print(Foo.hobby)

@classmethod
def f3():
print(cls.hobby)
13.看代码写结果:
class Foo(object):
@classmethod
def f3(cls):
print(cls)
Foo.f3()

结果<class '__main__.Foo'>


14.看代码写结果
class Foo(object):
@classmethod
def f3(cls):
print(cls)
obj = Foo()
obj.f3()

结果<class '__main__.Foo'>
# 15. 看代码写结果
class Foo(object):
@classmethod
def f3(cls):
print(cls)

def f2(self):
self.f3()
Foo.f3()
obj = Foo()
obj.f2()

结果<class '__main__.Foo'>
<class '__main__.Foo'>
16. 看代码写结果
class Base(object):
@classmethod
def f3(cls):
print(cls)

def f1(self):
print("base.f1")
self.f3()
class Foo(Base):

def f2(self):
print("foo.f2")
self.f1()
obj = Foo()
obj.f2()
结果 foo.f2
base.f1
<class '__main__.Foo'>

17.请编写一个静态方法,并通过代码证明私有方法不能再外部访问但可以在内部访问


18.
原文地址:https://www.cnblogs.com/liurenli/p/9710037.html