Python-将类实例化传递给函数

时间:2018-06-28 22:32:23

标签: python-3.x

我需要将类实例化传递给函数。
这是我到目前为止写的:

def func(dog):
    print(dog.get_name)

def main():
    new_dog = dog(name, age, weight)
    func(new_dog)

但是当我尝试执行它时,出现以下错误消息:

<bound method animal.get_name of <classes.dog object at 0x7f9611002b70>

基本上我有一个包含以下类的类文件:

  • 动物-母类(包括吸气剂名称)
  • 狗-动物的孩子类
  • 猫-动物的孩子类

我做错了什么?

-编辑- 类的结构:

class animal:
    # public vars
    name = ""
    age = 0
    weight = 0.00
    animal_type = ""

    # public constructor
    def __chars(self):
        print("His name is: " + self.name)
        print("He is: " + str(self.age) + " y.o.")
        print("His weight: " + str(self.weight) + " Kg")
    def __init__(self, name, age, weight, animal_type):
        self.name = name
        self.age = age
        self.weight = weight
        self.animal_type = animal_type
        print("A new animal has been created!")
        self.__chars()
    # public methods
    def eat(self):
        print("The animal eat!")
    def drink(self):
        print("The animal drink!")
    def play(self):
        print("The animal plays!")
    def get_name(self):
        return self.name
    # public destructor
    def __del__(self):
        print('\n' + self.name + "has died :(")

# Child classes
class dog(animal):
    __dlevel = None # dangerous level, it can be 0, 1 or more, it's private

    # private methods
    def set_dlevel(self, dlevel):
        self.__dlevel = dlevel
        print("Dangerous level set!")

    def get_dlevel(self):
        # CHeck if the level is define
        if not self.__dlevel:
            print("Dog dangerous level not found")
            sys.exit(1)
        # if is equal or more than 1 is dangerous
        if int(self.__dlevel) >= 1:
            print("The dog is dangerous, be careful while playing with him!")
        # otherwise it's a quiet dog
        elif int(self.__dlevel) <= 0:
            print("The dog isn't dangerous")

1 个答案:

答案 0 :(得分:0)

我发现了真正的问题:我正在打印函数,而不是调用它。
所以我改用了

def func(animal):
    print(animal.get_name())

def main():
    new_dog = dog("max", 14, 11, "dog")
    func(new_dog)