python 面向对象(云储存一下)

1, 类和对象是什么关系呢?

一个类为它的全部对象给出了一个统一的定义,而他的每个对象则是符合这种定义的一个实体,因此类和对象的关系就是抽象和具体的关系。

2, 类的属性定义应该尽可能抽象还是尽可能具体?

尽可能的抽象,因为这样更符合面向对象的思维

3,对象中的属性和方法,在编程中实际是什么?

属性是 变量               方法是函数

4, 函数和方法有什么区别?

方法跟函数其实几乎完全一样,但有一点区别是方法默认有一个 self 参数

5,一句话概括面向对象的几个特征

封装对外部隐藏对象的工作细节
继承子类自动共享父类之间数据和方法的机制
多态可以对不同类的对象调用相同的方法,产生不同的结果

6,我们定义了一个猫类,实例化对象有哪些?

叮当猫,咖啡猫,Tom(Tom&Jerry),Kitty(Hello Kitty)

7,当程序员已经有了一个类,而又想建立一个非常相近的新类,他们会怎么做呢?

 定义一个新类继承已有的这个类,这样子就只需要简单添加和重写需要的方法即可

8,self参数的作用是什么?

self 其实就是实例对象的唯一标志

9,类在实例化后哪个方法会被自动调用?

__init__方法会在类实例化时被自动调用。可以重写这个方法,为对象定制初始化方案

10,找出错误

class Uesr:
        name = '菜鸟'
        def myFun(self):
                print("Hello")
                
>>> Uesr.name
'菜鸟'
>>> Uesr.myFun()
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    MyClass.myFun()
TypeError: myFun() missing 1 required positional argument: 'self'
>>>

类指的是类定义,当类定义完之后,自然就是类对象。在这个时候,你可以对类的属性(变量)进行直接访问(User.name)。fVTR"
p"R>4_9#]3`k;5~Sx+sgnjGNh
一个类可以实例化出无数的对象(实例对象),Python 为了区分是哪个实例对象调用了方法,于是要求方法必须绑定(通过 self 参数)才能调用。而未实例化的类对象直接调用方法,因为缺少 self 参数,所以就会报错

11,按以下方式重写魔法方法 __init__,结果会怎样?

class My:
        def __init__(self):
                return "菜鸟"

会报错,因为 __init__ 特殊方法不应当返回除了 None 以外的任何对象

 12,当子类定义了与相同名字的属性或方法时,Python 是否会自动删除父类的相关属性或方法?

不会删除!Python 的做法跟其他大部分面向对象编程语言一样,都是将父类属性或方法覆盖,子类对象调用的时候会调用到覆盖后的新属性或方法,但父类的仍然还在,只是子类对象“看不到”

13,类对象是在什么时候产生?

类定义完的时候,类定义就变成类对象,可以直接通过“类名.属性”或者“类名.方法名()”引用或使用相关的属性或方法

14,如果对象的属性跟方法名字相同,会怎样?

如果对象的属性跟方法名相同,属性会覆盖方法

class C:
        def conduct(self):
                print('CN')

>>> c = C()
>>> c.conduct()
CN
>>> c.conduct = 1
>>> c.conduct
1
>>> c.conduct()
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    c.conduct()
TypeError: 'int' object is not callable

15,cc对象为什么调用 printCN() 方法失败

class 菜鸟:
        def printCN():
                print("no zuo no die")

>>> cc = 菜鸟()
>>> cc.printCN()
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    cc.printCN()
TypeError: printCN() takes 0 positional arguments but 1 was given

因为 Python 严格要求方法需要有实例才能被调用,这种限制其实就是 Python 所谓的绑定概念。所以 Python 会自动把 cc 对象作为第一个参数传入,所以才会出现 TypeError:“需要 0 个参数,但实际传入了 1 个参数“

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值