【发布时间】:2020-12-08 01:48:14
【问题描述】:
我正在尝试学习实例属性与类属性和属性之间的区别。我有下面的代码,我试图区分这些因素。
class Student:
firstname = ""
lastname = ""
ucid = ""
department = ""
nationality = ""
courses = {}
def __init__(self, fname, lname, ucid, dept, n):
self.firstname = fname
self.lastname = lname
self.ucid = ucid
self.department = dept
self.nationality = n
self.courses = {}
def setName(self, fname, lname):
self.firstname = fname
self.lastname = lname
def setDepartment(self, d):
self.department = d
def setUcid(self, u):
self.ucid = u
def setNationality(self, n):
self.nationality = n
def addCourse(self, coursename, gpa):
self.courses[coursename] = gpa
def printAll(self):
print("The name of the student is ", self.firstname, self.lastname)
print("nationality and UCID: ", self.nationality, self.ucid)
print("Department: ", self.department)
print("Result: ")
for key in self.courses.keys():
print(key, self.courses[key])
print("--------------------\n")
s1=Student("Beth","Bean","30303","Computer Science","International")
s1.addCourse("SCIENCE",3.75)
s1.printAll()
s2=Student("Mac","Miller","30303","Envr Science","American")
s2.addCourse("MATH",4.00)
s2.printAll()
据我了解,属性是:firstname,lastname,ucid,department,nationality,courses 但我不知道 instance attributes 和 class attributes 是什么。
【问题讨论】:
-
您已经创建了一堆类属性,这些属性是您在类作用域中定义的,您立即使用
__init__中的实例属性对其进行影射。使这些类属性变得毫无意义。 -
@juanpa.arrivillaga 我是编码新手,我该怎么办?
-
只是不定义类属性?取决于你。顺便说一句,不要在 Python 中编写 getter 和 setter。它们没有任何用处
-
@juanpa.arrivillaga 我编写了 getter 和 setter 以使代码更具可读性,但谢谢!我的主要问题是在这种情况下
class attributes、instance attributes和attributes是什么。如何区分它们?
标签: python function oop attributes instance-variables