class hello(): def showInfo(sef): print(self.x),在pycharm 工具中会出现语法错误,说self没有定义对不对
时间: 2024-03-20 21:39:23 浏览: 130
是的,您所提供的代码有语法错误。在Python中,self是一个约定俗成的参数名,用于表示对象自身。您需要将self作为第一个参数传递给方法。因此,正确的代码应该是:
```
class hello():
def showInfo(self):
print(self.x)
```
这样,您就可以在类的方法中使用self来引用对象自身了。
相关问题
class Animal: def __init__(self, name, color, footNumber): self.name = name self.color = color self.footNumber = footNumber def showInfo(self): print(f"名称:{self.name},颜色:{self.color},脚的只数:{self.footNumber}") def move(self): print("可以通过飞、跑、游等方式移动身体") class Bird(Animal): def move(self): print("通过飞来移动身体") def nest(self): print("在树上筑巢") class Fish(Animal): def __init__(self, name, color, footNumber, length): super().__init__(name, color, footNumber) self.length = length def showInfo(self): super().showInfo() print(f"身长:{self.length}") def move(self): print("通过游来移动身体") #测试类bird = Bird("麻雀", "灰色", 2)bird.showInfo()bird.move()bird.nest()fish = Fish("金鱼", "红色", 0, "10cm")fish.showInfo()fish.move()animal = Animal("狗", "棕色", 4)animal.showInfo()animal.move()
这是一个 Python 中的面向对象编程例子,定义了一个基类 Animal 和两个派生类 Bird 和 Fish。其中 Animal 类有名称、颜色和脚的只数三个属性,以及 showInfo 和 move 两个方法;Bird 类继承自 Animal 类,并重写了 move 方法,增加了 nest 方法;Fish 类也继承自 Animal 类,并增加了身长属性,重写了 showInfo 和 move 方法。最后在程序中分别实例化了 Animal、Bird 和 Fish 类,并调用了它们的方法。
在运行程序时,会输出每个实例的详细信息并调用它们的 move 方法。可以看到,Bird 类的 move 方法是通过飞来移动身体,Fish 类的 move 方法是通过游来移动身体,而 Animal 类的 move 方法只是输出了一句话“可以通过飞、跑、游等方式移动身体”。这说明了在面向对象编程中,派生类可以重写基类的方法,实现不同的功能。
def __init__(self,parent_window): parent_window.destroy() # 销毁子界面 self.window = tk.Tk() self.window.title('学生清单') self.window.geometry('1200x600+70+50') db = pymysql.connect(host="localhost", user="root", passwd="123456", db="room_db") cursor = db.cursor() # 使用cursor()方法获取操作游标 sql = "SELECT * FROM 学生住宿信息表" try: cursor.execute(sql) # 执行sql语句 results = cursor.fetchall() for row in results: self.id = '学号: ' + row[0] self.name = '姓名: ' + row[1] self.gender = '性别: ' + row[2] self.age = '年龄: ' + row[3] self.num = '电话:' + row[4] self.build = '公寓号:' + row[5] self.room = '宿舍号:' + row[6] db.commit() Label(self.window, text=self.id + "\t" + self.name + "\t" + self.gender + "\t" +self.age + "\t" +self.num+ "\t"+self.build + "\t" + self.room, font=('楷体', 18)).pack(pady=5) except: db.rollback() # 发生错误时回滚 messagebox.showinfo('警告!', '数据库连接失败!') db.close() # 关闭数据库连接 self.right_top_button4 = ttk.Button(text='返回', width=20, command=self.back).pack() self.window.protocol("WM_DELETE_WINDOW", self.back) def back(self): cangkucha(self.window)为什么运行不了
根据您提供的代码,问题可能出在`cangkucha(self.window)`这一行上。根据代码来看,`cangkucha()`是一个函数,而不是一个类或对象的方法。所以,您需要将其改为函数的调用,而不是将其作为类的实例化。可以尝试使用以下代码进行调用:
```python
cangkucha(self.window)
```
另外,请确保在运行代码之前已经导入了必要的模块,如`tkinter`、`pymysql`、`messagebox`等。如果没有导入相关模块,也会导致代码运行失败。
阅读全文