首页 > 解决方案 > 为什么 __init__ 函数内部的 if,else 条件无法正常工作?蟒蛇 3

问题描述

我是python纯编程的新手,我创建了简单的“人类”类,并希望在字典中创建一些具有初始类函数“--inti--”的所有属性的对象,问题是,我可以没有为“gender”参数指定那种类型的预期格式,并且 --init-- 中的 if-else 条件无法正常工作,我的意思是它总是在我添加时将性别参数填写为“Female”,例如,一男一女有两种性别,但它只是为每个对象添加了性别=“女性”

class Human:
    def __init__(self, name, gender, age):
            self.name = name

            if  ('Famele' or 'female' or 'f' or 'F' in gender):
                    gender = "Female"
                    self.gender= gender

            elif ('Male' or 'male' or 'm' or 'M' in gender):
                    gender = "Male"
                    self.gender = gender

            self.age = age

lis_obj_name = []
def obj_creator():
    obj_number = int(input("how many object would you like to create? "))
    for i in range(obj_number):
            my_object = input('what is object name? ')
            lis_obj_name.append(my_object)




obj_creator()


my_objects = {objects: Human(input('your name '),input('male,or female(Plz write it) '),input('your 
age ')) for objects in lis_obj_name}

或者例如使用这种 if-else 格式,它仍然不起作用!:

class Human:
    def __init__(self, name, gender, age):
            self.name = name

            if  gender == 'Famele' or 'female' or 'f' or 'F':
                    gender = "Female"
                    self.gender= gender

            elif gender == 'Male' or 'male' or 'm' or 'M':
                    gender = "Male"
                    self.gender = gender

            self.age = age

标签: python

解决方案


您的代码的问题是语句if "Famele" or "female" or "f" or "F" in sexual。该语句将始终评估为True因此elif块永远不会执行。

您可以将Human类的实现更改为此,它使用in运算符来检查性别。

class Human:
    def __init__(self, name, sexual, age):
        self.name = name

        if sexual in ["Famele", "female", "f", "F"]:
            sexual = "Female"
            self.sexual = sexual

        elif sexual in ["Male", "male", "m", "M"]:

            sexual = "Male"
            self.sexual = sexual

        self.age = age

推荐阅读