长安869 2021-02-27 23:53 采纳率: 0%
浏览 46

MacBook Air 运行pycharm,代码无误,为何总显示未定义对象

class Student: # student为类的名称(类名)由一个或多个单词组成,每个单词的首字母大写,其余小写
    pass
    print(id(Student))
    print(type(Student))
    native_place='吉林'     # 直接写在类里的变量,称为类属性
    def __init__(self,name,age):
        self.name=name                      # self.name称为实体属性,进行了一个赋值操作,将局部变量的name的值赋给实体属性
        self.age=age


    #创建Student类对象
    stu1=Student('张三',20)
    stu1.eat()
    Student.eat(stu1)
  • 写回答

1条回答 默认 最新

  • 关注

    这段代码中定义了类和类的方法,但是在类定义结束后,调用了类的实例和方法,应该将实例和方法的调用放在类定义后面,而不是在类定义中间。同时,类属性也应该在类定义中定义完毕后才能进行访问。

    以下是修改后的代码:

    class Student:
        native_place = '吉林'
    
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def eat(self):
            print(f"{self.name} is eating...")
    
    # 创建Student类对象
    stu1 = Student('张三', 20)
    stu1.eat()  # 调用实例方法
    Student.eat(stu1)  # 通过类调用实例方法
    

    注意,在类定义结束后,首先创建了一个Student类的实例stu1,然后通过实例调用了eat()方法;接着通过类名调用了eat()方法,并传入了stu1作为参数。这两种方法调用的结果是一样的,都是输出“张三 is eating...”。

    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退