class person: def __init__(slef,name,age,socer): slef.sname=name slef.sage=age slef.ssocer=socer slef.sgender="male" def getname(slef): return slef.sname def getage(slef): return slef.sage def getsocer(slef): assert type(slef.ssocer)=="list" assert len(slef.ssocer)>=0 return max(slef.ssocer) a=("李小亮",'24',[90,99,100]) a.getname()
时间: 2024-02-14 20:23:30 浏览: 71
在代码中,你定义了一个名为 person 的类,其中包含了初始化方法 `__init__()` 和三个获取属性的方法 `getname()`、`getage()` 和 `getsocer()`。在创建类实例时,需要传入三个参数 name、age 和 socer,分别表示人的姓名、年龄和考试成绩(以列表的形式传入)。其中,初始化方法将这三个参数以及一个默认的属性 sgender(表示性别,默认为 male)存储到实例的对应属性中。获取姓名、年龄和最高成绩的方法分别返回实例对应的属性值。
在这段代码中,有一个错误。变量 a 应该是一个类实例,而不是一个元组。应该使用 `a = person("李小亮", 24, [90, 99, 100])` 创建实例对象,然后调用 `a.getname()` 方法才能获得名字 "李小亮"。
相关问题
class Person: def __init__(slef,name,age,socer): slef.sname=name slef.sage=age slef.ssocer=socer slef.sgender="male" def getname(slef): return slef.sname def getage(slef): return slef.sage def getsocer(slef): assert type(slef.ssocer)=="list" assert len(slef.ssocer)>=0 return max(slef.ssocer) a=Person a=("李小亮",'24',[90,99,100]) a.getname()
在这段代码中,有两个错误。
首先,创建类实例时应该使用类名加括号的形式,即 `a = Person("李小亮", 24, [90, 99, 100])`。这样才能创建一个名为 a 的 Person 类实例,其中包含了姓名、年龄和考试成绩等属性。
其次,在调用类实例的方法时,应该使用点号(.)来调用,而不是使用括号。因此,应该使用 `a.getname()` 来获取名字 "李小亮",而不是 `a.getname()`。
正确的代码如下:
```
class Person:
def __init__(self, name, age, socer):
self.sname = name
self.sage = age
self.ssocer = socer
self.sgender = "male"
def getname(self):
return self.sname
def getage(self):
return self.sage
def getsocer(self):
assert type(self.ssocer) == "list"
assert len(self.ssocer) >= 0
return max(self.ssocer)
a = Person("李小亮", 24, [90, 99, 100])
print(a.getname()) # 输出:李小亮
```
import math class QE: __a = 0 __b = 0 __c = 0 def __init__(self,a,b,c): QE.__a = a QE.__b = b QE.__c = c def geta(self): return QE.__a def getb(self): return QE.__b def getc(self): return QE.__c def getD(self): return QE.__b^2-4*QE.__a*QE.__c def getRoot1(self): M = QE.getD() if M < 0: print("该方程无根!") elif M == 0: print("x1 = x2 = {:.2f}".format( (-QE.__b - math.sqrt(QE.__b ^ 2 - 4 * QE.__a * QE.__c)) / 2 * QE.__a )) else: print("x1 = {:.2f}".format( (-QE.__b - math.sqrt(QE.__b ^ 2 - 4 * QE.__a * QE.__c)) / 2 * QE.__a )) QE.getRoot2() def getRoot2(slef): print("x2 = {:.2f}".format((-QE.__b + math.sqrt(QE.__b ^ 2 - 4 * QE.__a * QE.__c)) / 2 * QE.__a)) a = int(input("请输入a值")) b = int(input("请输入b值")) c = int(input("请输入c值")) B = QE(a,b,c) B.getRoot1()
出现这个错误是因为你在调用 `QE.getD()` 方法时,没有将实例对象作为参数传递给该方法。因为 `getD()` 方法是实例方法,需要使用 `self` 来引用实例对象的属性。你可以将 `QE.getD()` 改为 `self.getD()`,这样就能正确地引用实例对象了。此外,你在 `getRoot2()` 方法中拼写错误,应该是 `self` 而不是 `slef`。下面是修改后的代码:
import math
class QE:
__a = 0
__b = 0
__c = 0
def __init__(self,a,b,c):
QE.__a = a
QE.__b = b
QE.__c = c
def geta(self):
return QE.__a
def getb(self):
return QE.__b
def getc(self):
return QE.__c
def getD(self):
return QE.__b**2-4*QE.__a*QE.__c
def getRoot1(self):
M = self.getD()
if M < 0:
print("该方程无根!")
elif M == 0:
print("x1 = x2 = {:.2f}".format((-QE.__b - math.sqrt(QE.__b**2 - 4 * QE.__a * QE.__c)) / 2 * QE.__a))
else:
print("x1 = {:.2f}".format((-QE.__b - math.sqrt(QE.__b**2 - 4 * QE.__a * QE.__c)) / 2 * QE.__a))
self.getRoot2()
def getRoot2(self):
print("x2 = {:.2f}".format((-QE.__b + math.sqrt(QE.__b**2 - 4 * QE.__a * QE.__c)) / 2 * QE.__a))
a = int(input("请输入a值"))
b = int(input("请输入b值"))
c = int(input("请输入c值"))
B = QE(a,b,c)
B.getRoot1()
阅读全文