簡體   English   中英

在python中為類創建創建的未命名學生

[英]name student undefined in python for class creation

python新手。 在python中運行此腳本時,出現一個undefined name: student錯誤。 下面是我的代碼。 我嘗試解決此問題,但失敗了。

class Student:
    Std1 = Student()
    #std2 = Student()

    Std1.fname='Sushant'
    Std1.lname='Shinde'

    print(Std1.fname)

嘗試這個:

class Student:
    def __init__(self):
        pass

Std1 = Student()
#std2 = Student()

Std1.fname='Sushant'
Std1.lname='Shinde'

print(Std1.fname)

在回答之前,我建議您尋找Python OOP教程。 這個 (不是我的網站)看起來還可以。


您正在嘗試在Student范圍內的所有操作。 您應該嘗試這樣的事情:

class Student:
    def __init__(self, fname, lname):  # self is a reference to the newly created object
        self.fname = fname
        self.lname = lname

Std1 = Student('Sushant', 'Shinde')  # Create an instance object, with specific fname and lname
print(Std1.fname)  # Sushant
Std1.fname = 'Sushant2'
print(Std1.fname)  # Sushant2

Std2 = Student('Another', 'Student')
print(Std2.fname)  # Another
print(Std2.lname)  # Student

班級基本上是對象的藍圖,您必須先為學生定義班級,然后再為其創建對象。

class Student:
    def __init__(self, fname, lname):
        self.fname = fname;
        self.lname = lname;


Std1 = Student('Sushant', 'Shinde')
print(Std1.fname)

__init__(self)是充當構造函數的函數,並保存類的屬性或成員變量。 上面是使用類的正確方法。 為了進一步參考,您可以在此處閱讀有關類和對象的信息

似乎您正在嘗試使用類屬性。

class Student:
    fname = 'a'
    lname = 'b'

print(Student.fname)
a = Student()
print(a.fname)

下面的代碼是一個類定義,您可以定義Student類的屬性和行為。

class Student:
    def __init__(self,first,last):
       self.first_name = first;
       self.last_name = last;

    def show_full_name(self):
       print(self.first_name+" "+self.last_name);

例如,函數__init__是剛創建完Student對象之后將被調用的函數。

student_A = Student("Ali", "Miles");
student_B = Student("Sarah", "Parker");

之后,您可以使用屬性first_namelast_name 您也可以使用已定義的方法show_full_name顯示對象的全名。

student_A.show_full_name();
student_B.show_full_name();

print(student_A.first_name);
print(student_B.first_name);

以上4行代碼的輸出:

Ali Miles
Sarah Parker
Ali
Sarah

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM