類的構成 類(Class) 由3個部分構成 類的名稱:類名 類的屬性:一組數據 類的方法:允許對進行操作的方法 (行為) 定義類 創建對象 Student類擁有的屬性數據 __init__()方法 __init___方法傳遞參數 __init___方法總結 定義__str__()方法 當使用prin ...
<1>類的構成
類(Class) 由3個部分構成
類的名稱:類名
類的屬性:一組數據
類的方法:允許對進行操作的方法 (行為)
<2>定義類
class 類名:
方法列表
class Student(object):
def run(self):
print('學生跑步')
def sing(self):
print('學生唱歌')
<3>創建對象
對象名 =類名()
stu =Student()
Student類擁有的屬性數據
stu.name ='gxj'
stu.num ='123'
stu.run()
stu.sing()
print(stu.name)
print(stu.num)
<4>init()方法
class Student(object):
def __init__(self):
self.name ='gxj'
self.num ='123'
def run(self):
print('學生在跑步')
stu =Student()
print('學生的姓名:%s'%stu.name)
print('學生的座位號:%s'%stu.num)
結果如下:
學生的姓名:gxj
學生的座位號:123
init_方法傳遞參數
class Student(object):
def __init__(self,newName,newNum):
self.name =newName
self.num =newNum
def run(self):
print('學生在跑步')
stu =Student('gxj1','1234')
print('學生的姓名:%s'%stu.name)
print('學生的座位號:%s'%stu.num)
init_方法總結
__init__()方法,在創建一個對象時預設被調用,不需要手動調用
__init__(self)中,預設有1個參數名字為self,如果在創建對象時傳遞了2個實參,那麼__init__(self)中出了self作為第一個形參外還需要2個形參,例如__init__(self,x,y)
__init__(self)中的self參數,不需要開發者傳遞,python解釋器會自動把當前的對象引用傳遞進去
<5>定義__str__()方法
當使用print輸出對象的時候,只要自己定義了__str__(self)方法,那麼就會列印從在這個方法中return的數據
class Student(object):
def __init__(self,newName,newAge):
self.name =newName
self.age =newAge
def __str__(self):
msg ='我是的姓名:'+self.name+'年齡:'+self.age
return msg
def run(self):
print('跑步')
stu =Student('gxj','17')
print(stu)
結果如下:
我是的姓名:gxj年齡:17
<6>self的用法
所謂的self,可以理解為自己
某個對象調用其方法時,python解釋器會把這個對象作為第一個參數傳遞給self,所以開發者只需要傳遞後面的參數即可
class Animal(object):
def __init__(self,name):
self.name =name
def printName(self):
print('名字為:%s'%self.name)
def myPrint(anamil):
anamil.printName()
dog1 =Animal('東東')
myPrint(dog1)
dog2 =Animal('西西')
myPrint(dog2)
<7>保護對象的屬性
<1>對象名.屬性名 = 數據 ---->直接修改
<2>對象名.方法名() ---->間接修改
為了更好的保存屬性安全,即不能隨意修改,一般的處理方式為
<1>將屬性定義為私有屬性
<2>添加一個可以調用的方法,供調用
class Student1(object):
def __init__(self,name):
self.__name =name
def getName(self):
return self.__name
def setName(self,newName):
if len(newName)>=3:
self.__name =newName
else:
print('error:名字長度需要大於3或等於3')
xiaogao =Student1('xiaogao')
xiaogao.setName('xiaoniu')
print(xiaogao.getName())
xiaogao.setName('xiaosong')
print(xiaogao.getName())
總結:
Python中沒有像C++中public和private這些關鍵字來區別公
有屬性和私有屬性
它是以屬性命名方式來區分,如果在屬性名前面加了2個下劃線'__',則
表明該屬性是私有屬性,否則為公有屬性(方法也是一樣,方法名前面加了2個下劃線的話表示該
法是私有的,否則為公有的)。