+6 投票
分类:编码思路 | 用户: 8 5 3 (1.4k 分)
重新分类 用户:
用Python面向对象编程,封装一个类(Person),求具有3个实例化变量:姓名(name),体重(weight)和爱好(hobby),构造两个成员函数(即内部方法)run和eat,eat方法需要实现的功能是,在一个实例使用该方法后,增重1Kg,即weight变量加1;而run方法能相反地让人减肥0.5Kg。

我不明白如何构建成员函数,它和普通函数有什么区别吗?

1个回答

+2 投票
用户:
采纳于 用户:
 
已采纳
class Person():

    def __init__(self,name,weight,hobby):

        self._name = name

        self._weight = weight

        self._hobby = hobby

    def eat(self):

        self._weight+=1

    def run(self):

        self._weight-=0.5

student = Person('die',100,'girl')

print(student._weight)

student.eat()

print(student._weight)

区别很大:

1.成员函数是面向对象的概念,所谓的成员函数,是指一个函数作为类的成员,公有成员、私有成员或者保护成员。

2.普通函数一般有两种传递方式,按类型传递和按值传递,也就是传指针和传返回值两种情况。成员函数一般是按类型传递,也即是传指针地址

3.普通函数可以随便调用,并且无法继承和封装,成员函数根据类的不同,可以进行继承,根据公有私有的不同,调用方式也不同

4.深层次的区别,普通函数作为C语言的概念,用的是stdlib,成员函数是用iostream,编译方法不同,至于谁占内存多,并不好说,也不是说面向对象的就占内存大些,还是看具体的环境和编译器。

5.嵌入式的编程,用普通函数较多,成员函数较少,当然ARM嵌入linux那种例外

大体上能一下子想到的只有这么多了

函数是否分配内存,看变量,这个问题,我得详细解释一下,你是否熟悉汇编?知道不知道函数字段这个概念,也就说,所有函数都是分配在一段共享字段里面的,也就是你所说的内存,其实不仅仅是内存,包括闪存等等都可以包含,所以是占用了一段空间的,只是这段空间不一定在内存内,可能在闪存内,也可能在硬盘内,这么说,你清楚吗?
欢迎来到 在线问答系统 ,有什么不懂的可以尽管在这里提问,你将会收到社区其他成员的回答。
...