立即學習:https://edu.csdn.net/course/play/25504/304699?utm_source=blogtoedu
# 面向過程
stu1 = {"name": "xiaohong", "score": 98}
stu2 = {"name": "xiaobai", "score": 80}
def print_stu(stu):
print('%s: %s' % (stu["name"], stu["score"]))
# 面向對象
# 設計類
# 屬性和方法
# 繼承自object基類(Python3)
class Student(object):
# 方法
def __init__(self, name, score):
self.name = name
self.score = score
def print_score(self):
print("%s :%s" % (self.name, self.score))
# 實例化對象xiaohong
xiaohong = Student('xiaohong', 98)
xiaohong.print_score()
# 也可直接訪問對象屬性
print("%s :%s" % (xiaohong.name, xiaohong.score))
# 每個對象被實例化後會有一個獨立的內存空間
# 查看對象內存地址
print(id(xiaohong))
'''
繼承,封裝,多態
'''
class Student(object):
# 方法
def __init__(self, name, score):
self.name = name
self.score = score
def print_score(self):
print("%s :%s" % (self.name, self.score))
def get_grade(self):
if self.score >= 90:
return 'A'
elif self.score >= 60:
return 'B'
else:
return 'C'
# 這裏對象xiaolv調用了第二個Student,可以理解爲同名類後定義的會覆蓋先定義的
xiaolv = Student("xiaolv", 45)
print(xiaolv.get_grade())
# __代表私有
class Student(object):
def __init__(self, name, score):
self.__name = name
self.__score = score
def print_score(self):
print("%s: %s" % (self.__name, self.__score))
def get_grade(self):
if self.__score >= 90:
return 'A'
elif self.__score >=60:
return 'B'
else:
return 'C'
def get_score(self):
return self.__score
def set_score(self, score):
if 0<=score<=100:
self.__score = score
else:
raise ValueError("不符合規範的輸入")
xiaobai = Student("xiaobai", 70)
print(xiaobai.get_score())
# 但是python沒有真正的私有,只是變量名被改爲_Student__name,依然可以訪問
print(xiaobai._Student__name)
# 實例屬性 必須通過初始化或實例化對象,通過對象去訪問
class Student(object):
def __init__(self, name):
self.name = name
s = Student('Bob')
print(s.name)
# 類屬性 不需要實例化對象,直接通過類名訪問
class Student(object):
name = 'Student'
# 實例化對象修改類屬性,只會改變當前對象的類屬性;通過類修改類屬性,全部該類的對象都會改變類屬性
a = Student()
b = Student()
Student.name = '2'
a.name = '1'
print(a.name)
print(b.name)