问答详情
源自:2-8 Python定义实例方法

init和set内容重复

init方法不是已经对参数进行了初始化,为什么还需要set方法再一次赋值

提问者:禾希禾希 2021-03-03 17:56

个回答

  • 慕移动3495689
    2021-07-07 10:14:05

    作者的意思是set 可以对实列化进行单独修改,比如dog.set('nomi'), 然后再调用的时候dog.get_name(),所输出的结果就是nomi. 如果不用增加set实例方法的话,修改变量需要重新定义实例化

  • 浮___雲
    2021-05-17 22:01:15

    get和set都没有什么意义,只是一个单纯的函数名字,我把get或者set改成A11也可以执行

    class Animal(object):

        count=0

        def __init__(self,name,age,localtion):

            self.__name=name

            self.__age=age

            self.__localtion=localtion

            Animal.count=Animal.count+1

        def A11_name(self):

            return self.__name

        def A11_age(self):

            return self.__age

        def A11_localtion(self):

            return self.__localtion

    dog=Animal('xiaohei','3','beijing')

    cat=Animal('dabai','99','tianjin')

    print(dog.A11_name())

    print(dog.A11_age())

    print(dog.A11_localtion())

    print(cat.A11_name())

    print(cat.A11_age())

    print(dog.A11_localtion())

    print(dog==cat)

    print(Animal.count)




  • 禾希禾希
    2021-03-03 17:58:46

    不需要set方法,直接get也是可以的

    class Animal(object):

        def __init__(self,name,age,localtion):

            self.__name = name

            self.__age = age

            self.__localtion = localtion

            

        def get_name(self):

            return self.__name

            

        def get_age(self):

            return self.__age

        

        def get_localtion(self):

            return self.__localtion

            

    dog = Animal('JM',3,'SZ')

    cat = Animal('BS',2,'SH')

    wolf = Animal('JWH',900,'OF')


    print('name:{},age:{},localtion:{}'.format(dog.get_name(),dog.get_age(),dog.get_localtion()))