我是python的新手,很难在Python中使用数组或列表来存储和访问对象.
我尝试过这样的事情:
class NodeInfo:
def __init__(self, left, value, right):
self.l = left
self.r = right
self.v = value
tree[0] = NodeInfo(0,1,2)
tree[0].l = 5
tree[0].r = 6
tree[0].v = 7
Run Code Online (Sandbox Code Playgroud)
当我尝试为变量赋值或尝试从变量中读取时,我收到以下错误:
tree[0] = NodeInfo(0,1,2)
NameError: name 'tree' is not defined
Run Code Online (Sandbox Code Playgroud)
我做错了什么,或者是否有不同的方法从Python中的数组或列表中分配和读取对象.
这两个类声明有什么区别?"对象"做什么?
class className(object):
pass
class className:
pass
Run Code Online (Sandbox Code Playgroud)运行以下代码时,为什么会出现此错误:"不带参数(给定1个)"
class Hobbs():
def represent():
print "Hobbs represent!"
represent = classmethod(represent)
Hobbs.represent()
Run Code Online (Sandbox Code Playgroud)为什么"Foo.class_foo()"没有给出错误,即使我没有将参数传递给函数.
class Foo(object):
@staticmethod
def static_foo():
print "static method"
@classmethod
def class_foo(cls):
print "Class method. Automatically passed the class: %s" % cls
Foo.static_foo()
Foo.class_foo()
Run Code Online (Sandbox Code Playgroud)运行以下代码时,为什么会出现此错误?
class Foo(object):
def static_foo():
print "static method"
static_foo = staticmethod(static_foo)
def class_foo(cls):
print "Class method. Automatically passed the class: %s" % cls
class_foo = classmethod(class_foo)
Foo.static_foo()
Foo.class_foo()
Run Code Online (Sandbox Code Playgroud)"TypeError:unbound方法static_foo()必须使用Foo实例作为第一个参数调用(没有取而代之)"
我创建了2个类A和B,B继承了A.我使用isinstance检查b是否为a类型,并返回false.不应该是真的吗?
class a():pass
class b(a):pass
print isinstance(b,a)
Run Code Online (Sandbox Code Playgroud) 我是Python的新手,我使用的是Python 2.7.x.
我对Python中的命名空间有疑问:
class Team():
x = 2
def p(self):
print x
a = Team()
a.p()
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,它说global x is not defined.不应该x属于Team对象吗?我的目标是创建一个Team类,其中x有2默认值.
在Java中它将是这样的:
class Team()
{
int x = 2;
}
a = new Team();
Run Code Online (Sandbox Code Playgroud) 在Python 2中:
>>> class A:
... pass
...
>>> A.__new__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class A has no attribute '__new__'
>>> class A(object):
... pass
...
>>> A.__new__
<built-in method __new__ of type object at 0x1062fe2a0>
Run Code Online (Sandbox Code Playgroud)
结论:object包含__new__和子类继承该方法.
在Python 3中:
>>> class A:
... pass
...
>>> A.__new__
<built-in method __new__ of type object at 0x100229940>
Run Code Online (Sandbox Code Playgroud)
__new__是我们类中定义的方法,没有任何继承.这是如何运作的?__new__"来自哪里"?
#!/usr/bin/env python
class SportsCar(object):
def __init__(self,make,colour):
self.make = make
self.colour = colour
self.horn = "BEEEEEEEEPPPPPPP"
def honk(self):
#now we can make some noise!
print self.make,' ',self.colour,' ',self.horn
print "Done "
mycar = SportsCar('Honda','silver')
#print mycar.make
#print mycar.colour
print mycar.honk()
print "Good Bye!!"
Run Code Online (Sandbox Code Playgroud)
上面代码的输出如下.
Honda silver BEEEEEEEEPPPPPPP
Done
None
Good Bye!!
Run Code Online (Sandbox Code Playgroud)
输出的前两行
Honda silver BEEEEEEEEPPPPPPP
Done
Run Code Online (Sandbox Code Playgroud)
这是由mycar.honk()打印的.
我也理解第4行
Good Bye!!
Run Code Online (Sandbox Code Playgroud)
我不明白第三行的"无"来自哪里?有人可以解释一下吗?
另一个相关的问题
这些变化之间有什么区别
class SportsCar:
Run Code Online (Sandbox Code Playgroud)
和
class SportsCar(object):
Run Code Online (Sandbox Code Playgroud)
我一直在不同的地方看到这两个问题.
我正在学习一个Programming类,并且对于其中一个测试,我需要创建一个继承自已创建的类的类.这是老师教我做的代码,但它似乎没有起作用:
class Intern(Employer):
def __init__(self, last_name, first_name, address, phone, email, end_date):
Employer(last_name, first_name, address, phone, email)
self.end_date=end_date
def intern_info(self):
self.print_info()
print self.end_date
Run Code Online (Sandbox Code Playgroud) python ×7
class ×2
arrays ×1
inheritance ×1
list ×1
methods ×1
namespaces ×1
object ×1
oop ×1
python-2.x ×1
store ×1