- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
感谢您帮助我了解此错误。我按照特定说明仔细检查了所有参数。当我运行Python 3.6时,它给我以下错误NameError:未定义名称'DEFAULT_STRING'。我检查了代码的所有部分,无法理解为什么在给我NameError时为什么我无法运行该代码。再次感谢您帮助我理解该错误。
class TripleString:
# intended class constants
MIN_LEN = 1
MAX_LEN = 50
DEFAULT_STRING = "(undefined)"
# constructor method
def __init__(self, string1 = DEFAULT_STRING, string2 = DEFAULT_STRING,
string3 = DEFAULT_STRING):
# assigning default values to the variables first
self.string1 = self.DEFAULT_STRING
self.string2 = self.DEFAULT_STRING
self.string3 = self.DEFAULT_STRING
# setting values using setter methods,
self.set_string1(string1)
self.set_string2(string2)
self.set_string3(string3)
# mutator ("set") methods
def set_string1(self, string1):
if self.valid_string(string1):
self.string1 = string1
return True
return False
def set_string2(self, string2):
if self.valid_string(string2):
self.string2 = string2
return True
return False
def set_string3(self, string3):
if self.valid_string(string3):
self.string3 = string3
return True
return False
# accessor ("get") methods
def get_string1(self):
return self.string1
def get_string2(self):
return self.string2
def get_string3(self):
return self.string3
def to_string(self):
return self.string1 + ", " + self.string2 + ", " + self.string3
# helper methods for entire class
def valid_string(self, the_str):
if len(the_str) >= self.MIN_LEN and len(the_str) <= self.MAX_LEN:
return True
return False
# ------------- CLIENT --------------------------------------------------
# Create 4 TripleString objects and printing
triple_string_num_1 = TripleString()
print(triple_string_num_1.to_string())
triple_string_num_2 = TripleString("Alice")
print(triple_string_num_2.to_string())
triple_string_num_3 = TripleString("Bob", "Chris")
print(triple_string_num_3.to_string())
triple_string_num_4 = TripleString("Oliver", "Laurel", "Thea")
print(triple_string_num_4.to_string())
print("")
# mutating values using setter methods
triple_string_num_1.set_string1("Lance")
triple_string_num_2.set_string2("XYZ")
triple_string_num_3.set_string1("Bobby")
triple_string_num_4.set_string2("Felicity")
print(triple_string_num_1.to_string())
print(triple_string_num_2.to_string())
print(triple_string_num_3.to_string())
print(triple_string_num_4.to_string())
print("")
# testing if validation working properly
if triple_string_num_4.set_string2(""):
print("successful in setting empty string for string2 of 4th object," + \
"validation is not working properly")
else:
print(
"failed in setting empty string for string2 of 4th object," + \
"validation is working properly")
print("Value after setting: ", triple_string_num_4.get_string2())
最佳答案
使用适当的缩进,您不应收到报告的名称错误:
class TripleString:
MIN_LEN = 1
MAX_LEN = 50
DEFAULT_STRING = "(undefined)"
def __init__(self, string1=DEFAULT_STRING, string2=DEFAULT_STRING,
string3=DEFAULT_STRING):
self.string1 = self.DEFAULT_STRING
self.string2 = self.DEFAULT_STRING
self.string3 = self.DEFAULT_STRING
self.set_string1(string1)
self.set_string2(string2)
self.set_string3(string3)
def set_string1(self, string1):
if self.valid_string(string1):
self.string1 = string1
return True
return False
def set_string2(self, string2):
if self.valid_string(string2):
self.string2 = string2
return True
return False
def set_string3(self, string3):
if self.valid_string(string3):
self.string3 = string3
return True
return False
def get_string1(self):
return self.string1
def get_string2(self):
return self.string2
def get_string3(self):
return self.string3
def to_string(self):
return self.string1 + ", " + self.string2 + ", " + self.string3
def valid_string(self, the_str):
if len(the_str) >= self.MIN_LEN and len(the_str) <= self.MAX_LEN:
return True
return False
class TripleString:
MIN_LEN = 1
MAX_LEN = 50
DEFAULT_STRING = "(undefined)"
@property
def string1(self):
return self._string1
@string1.setter:
def string1(self, value):
self._string1 = self._validate(value)
@property
def string2(self):
return self._string2
@string2.setter:
def string2(self, value):
self._string2 = self._validate(value)
@property
def string3(self):
return self._string3
@string3.setter:
def string3(self, value):
self._string3 = self._validate(value)
def __init__(self, string1=DEFAULT_STRING, string2=DEFAULT_STRING, string3=DEFAULT_STRING):
self.string1 = string1
self.string2 = string2
self.string3 = string3
def __str__(self):
return ", ".join([self.string1, self.string2, self.string3)]
def _validate(self, s):
if s is not None and self.MIN_LEN <= len(s) <= self.MAX_LEN:
return s
else:
return self.DEFAULT_STRING
class StringProperty:
MIN_LEN = 1
MAX_LEN = 50
DEFAULT = "(undefined)"
def __init__(self):
self._d = {}
def __get__(self, obj, objtype=None):
if obj is None:
return self
return self._d[id(obj)]
def __set__(self, obj, value):
self._d[id(obj)] = self._validate(value)
def _validate(self, s):
if s is not None and self.MIN_LEN <= len(s) <= self.MAX_LEN:
return s
else:
return self.DEFAULT_STRING
class TripleString:
string1 = StringProperty()
string2 = StringProperty()
string3 = StringProperty()
def __init__(self, s1=None, s2=None, s3=None):
self.string1 = s1
self.string2 = s2
self.string3 = s3
StringProperty
类中。字典将其类具有
StringProperty
属性的对象的标识映射到该对象中的属性的值。所有作业均就地验证。
>>> x = TripleString("foo", "bar")
>>> x.string1, x.string2, x.string3
('foo', 'bar', '(undefined)')
>>> x.string2 = 'baz'
>>> x.string2
'baz'
x.string1
等效于
TripleString.string1.__get__(x)
,而
x.string2 = 'baz'
等效于
TripleString.string2.__set__(x, 'baz')
。
关于python - NameError : name 'DEFAULT_STRING' is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50546057/
虽然我试图完全理解 NoMethodError 和 NameError 之间的区别,但我发现 NameError 在祖先中不在 0 位置。是 DidYouMean 的魔法吗? [1] pry(main
请谁来帮我解决这个问题。**当在服务器上运行时,特定的结果会出现,但服务器运行得很好。当我运行代码时,它发送这个错误
下面的 Python 由于某种原因失败了。 class NetVend: def blankCallback(data): pass def sendCommand(c
作为this great answer建议,从 Python 3.7 开始,如果 from __future__ import annotations 使用指令。 但是,如果我想为注释类型创建别名,这
我在导入自制模块时遇到了一些麻烦,我只是看不出我做错了什么。 我有一个名为 basics 的包,其中包含我所有的基类 我有一个名为 components 的第二个包,components 中的每个模块
我的 python 代码不断出现名称错误,未在 ticketSold 上定义全局变量。我不确定如何解决这个问题,因为我确实将其定义为全局变量。感谢您的帮助。 aLimit=300 bLimit=500
我正在安装 Redmine,但由于抽成问题,我快疯了。特别是,为了对不同的 Ruby 插件执行捆绑安装,我被要求安装 xapian-full-alaveteli,v 1.2.9.5。问题是我收到以下错
我的 python 代码不断出现名称错误,未在 ticketSold 上定义全局变量。我不确定如何解决这个问题,因为我确实将其定义为全局变量。感谢您的帮助。 aLimit=300 bLimit=500
我正在安装 Redmine,但由于抽成问题,我快疯了。特别是,为了对不同的 Ruby 插件执行捆绑安装,我被要求安装 xapian-full-alaveteli,v 1.2.9.5。问题是我收到以下错
所以我是第一年,有一点编码经验,但不多,我被赋予了制作基于文本的冒险游戏的任务。我的讲师给了我们一个模板并帮助我们开始,但我很困惑为什么这段代码会导致 shell 显示 NameError: name
我有一些编程经验,但我对 python 很陌生,我正在尝试弄清楚如何使用和导入 .py 文件中的类而不是 main 。我目前正在使用 netbeans,运行 CPython 3.2.1。 根据我现在的
代码非常简单,我刚刚开始用 python 编程 代码 man = input ("what's your name mister") print("his name is "+man) 运行程序后收到
我在文件中创建一个类。声明一些类变量 A = 5 和另一个类变量 B = A+1。从另一个文件导入该类时,出现 NameError: name 'A' is not Defined。有没有办法解决这个
我一直在为 Minecraft 的 Raspberry Pi 版本制作 mod,每次在程序中输入其中一个命令时,我都会遇到非常令人沮丧的错误。这是我的代码: import minecraft.mine
为什么会这样: def fn(proc, *args, **kwargs): cache = proc.cache = {} def cached_execution(cache, *
我是 Python 的新手,正在学习类,正在尝试编写一个“个人信息”程序: 这是我的代码: class PersonalInfo(): def names(self, name):
我今天用这个简单的代码遇到了一个非常奇怪的问题: var1 = 1 var2 = 2 if var1 > var2 > var3: print('Does not run') print('D
我正在 try catch 无法加载模块时发生的任何异常。当前的结果是“except” block 没有被执行。 import sys def loadModule(module): try:
这是我的代码: import os if os.path.exists(r'C:\Genisis_AI'): print("Main File path exists! Continuing
我正在学习列表理解,通过切换变量我得到了 2 个不同的结果,尽管它们看起来应该工作相同。 数组 a 等于 [[0, 0, 0, 0, 0], [1, 0, 0, 0, 0], [0, 0, 0, 0
我是一名优秀的程序员,十分优秀!