Discuss / Python / 哪位大佬帮忙看下,为什么我的程序会运行失败呀?

哪位大佬帮忙看下,为什么我的程序会运行失败呀?

Topic source

from enum import Enum, unique Gender=Enum('Gender',('Male',"Female")) class Student(object): def init(self, name, gender): self.name = name self.gender = gender

bart = Student('Bart','Gender.Male') if bart.gender == Gender.Male: print('测试通过!') else: print('测试失败!') print(bart.gender,Gender.Male)

运行结果为:

测试失败!
Gender.Male Gender.Male
[Finished in 0.2s]

两个问题 init应该前后有两个下划线; 传个Student的第二个参数不能加引号,否则就变成字符串了。

护苗2018

#3 Created at ... [Delete] [Delete and Lock User]

上面仁兄的第一个答案明显错误,下划线不是问题,这个留言板支持markdown语言 __init__被转义了。 这个题目第二个问题应该是,直接使用Enum方法的value属性则是自动赋给成员的int常量,默认从1开始计数。而本题要求Male = 0Female = 1,不符合题意,应该使用Enum派生出自定义类来解题。所以我们可以知道。

这题的正确写法应该是这样的Code:

class Gender(Enum):
    Male = 0
    Female = 1

@unique
class gender(Enum):
    Male = 0 # Sun的value被设定为0
    Female = 1

class Student(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

bart = Student('Bart','Gender.Male'),第二个参数就不要引号了吧。

小梦哒勒

#5 Created at ... [Delete] [Delete and Lock User]

问题不在0,1上面,从1开始随意啊。 你的问题是'Female'用的是双引号,测试时第二个参数 Gender.Male多加了引号

-- coding: utf-8 --

from enum import Enum, unique

Gender = Enum('Gender', ('Male', 'Female')) class Student(object): def init(self, name, gender): self.name = name self.gender = gender

测试:

bart = Student('Bart', Gender.Male) if bart.gender == Gender.Male: print('测试通过!') else: print('测试失败!')

CGcn_QQending

#6 Created at ... [Delete] [Delete and Lock User]

应该是小梦哒勒 说的 ''和""不要混用……

兰溪C游

#7 Created at ... [Delete] [Delete and Lock User]

练习直接run就能通过, 所以比较一下就行了

郝宇臻

#8 Created at ... [Delete] [Delete and Lock User]

Gender=Enum('Gender',('Male',"Female")这句里面,第2个'Gender'应该是'gender'。


  • 1

Reply