# 定義一個類
class Dog():
pass
# 範例化一個類
d1 = Dog()
d2 = Dog()
# 給範例賦予一個屬性name
d1.name = '大黃'
print(d1.name)
# 定義一個類
class Dog():
def __init__(self,name,height,blood,power):
self.name = name
self.height = height
self.blood = blood
self.power = power
# 範例化一個類並給屬性賦值
d1 = Dog('大黃',0.7,10,3)
d2 = Dog('二黑',0.5,10,4)
# 輸出範例的屬性值
print d1.name
print d2.name
self就代表當前範例,在我們建立範例的時候,模板中的self就代表了我們的範例,我們可以通過self存取當前範例的屬性、呼叫當前範例的方法:
# 定義一個模板
class Dog():
# 構造方法
def __init__(self,name,height,blood,power):
# 此時self代表了我們要定義的範例
self.name = name
self.height = height
self.blood = blood
self.power = power
# 範例化一個類並給屬性賦值
d1 = Dog('大黃',0.7,10,3)
d2 = Dog('二黑',0.5,10,4)
# 輸出範例的屬性值
print d1.name
print d2.name
在我們起初定義方法的時候,會有預設屬性存在,比如說血量,一開始就是滿血10滴,所以它就是預設屬性,我們不需要在方法的引數中給它傳值,直接在方法的屬性中定義好即可:
# 定義一個模板
class Dog():
# 構造方法
def __init__(self,name,height,power):
self.name = name
self.height = height
# 設定血量為預設屬性,值為10
self.blood = 10
self.power = power
# 範例化一個類並給屬性賦值
d1 = Dog('大黃',0.7,3)
d2 = Dog('二黑',0.5,4)
# 輸出範例的屬性值
print d1.name
print d2.name
print d1.blood
print d2.blood
這個挺簡單的,print輸出範例屬性,隨後再給範例屬性重新賦值:
# 定義一個模板
class Dog():
# 構造方法
def __init__(self,name,height,power):
self.name = name
self.height = height
# 設定血量為預設屬性,值為10
self.blood = 10
self.power = power
# 範例化一個類並給屬性賦值
d1 = Dog('大黃',0.7,3)
d2 = Dog('二黑',0.5,4)
# 輸出範例的屬性值
print d1.power
# 修改範例的屬性
d1.power = 9999
# 輸出
print d1.power
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/10/23 16:28
# @Author : Shadow
# @Site :
# @File : 簡單的類.py
# @Software: PyCharm
# 定義一個模板
class Dog():
# 構造方法
def __init__(self,name,height,power):
self.name = name
self.height = height
# 設定血量為預設屬性,值為10
self.blood = 10
self.power = power
# 建立多個範例
d1 = Dog('大黃',0.7,3)
d2 = Dog('二黑',0.5,4)
# 輸出範例的屬性值
print d1.name
print d2.name
# 用id()輸出範例的記憶體地址
print id(d1)
print id(d2)
現在我們要讓大黃二黑開始報自己的各項資料,所以新增一個方法bark():
# 定義一個模板
class Dog():
# 構造方法
def __init__(self,name,height,power):
self.name = name
self.height = height
# 設定血量為預設屬性,值為10
self.blood = 10
self.power = power
# 新增一個方法bark
def bark(self):
print '我是{},身高{},攻擊力{},血量{}'.format(self.name,self.height,self.power,self.blood)
# 建立多個範例
d1 = Dog('大黃',0.7,3)
d2 = Dog('二黑',0.5,4)
# 使用構造的方法
d1.bark()
d2.bark()
光叫也沒勁,我們構造一個attack()方法來讓他們打一架吧!
# 定義一個模板
class Dog():
# 構造方法
def __init__(self,name,height,power):
self.name = name
self.height = height
# 設定血量為預設屬性,值為10
self.blood = 10
self.power = power
# 新增一個方法bark
def bark(self):
print '我是{},身高{},攻擊力{},血量{}'.format(self.name,self.height,self.power,self.blood)
# 再新增一個attack()方法來執行攻擊這個行為
def attack(self,dog):
dog.blood = dog.blood-self.power
if dog.blood > 0:
print '{}的剩餘血量為:{}'.format(dog.name,dog.blood)
else:
print '{}擊殺了{}!'.format(self.name,dog.name)
# 建立多個範例
d1 = Dog('大黃',0.7,3)
d2 = Dog('二黑',0.5,4)
# 修改d1的攻擊力
d1.power = 999
# 使用構造的方法
d1.bark()
d2.bark()
# 使用attack()方法讓d1攻擊d2,並輸出d2的狀態
d1.attack(d2)
即定義一個可以修改實力屬性的方法,血量最低為0,不能出現負值,修改後的程式碼:
# -*- coding: gbk -*-
# 定義一個模板
class Dog():
# 構造方法
def __init__(self,name,height,power):
self.name = name
self.height = height
# 設定血量為預設屬性,值為10
self.blood = 10
self.power = power
# 新增一個方法bark
def bark(self):
print '我是{},身高{},攻擊力{},血量{}'.format(self.name,self.height,self.power,self.blood)
# 修改attack方法,在attack中呼叫reduce_blood方法
def attack(self,dog):
dog.reduce_blood = dog.reduce_blood(self.power)
if dog.blood > 0:
print '{}的剩餘血量為:{}'.format(dog.name,dog.blood)
else:
print '{}擊殺了{}!'.format(self.name,dog.name)
# 構造一個可以修改範例屬性值的方法reduce_blood
def reduce_blood(self,reduce_value):
if reduce_value > self.blood:
self.blood = 0
else:
self.blood = self.blood - reduce_value
# 建立多個範例
d1 = Dog('大黃',0.7,3)
d2 = Dog('二黑',0.5,4)
# 使用構造的方法
# d1.bark()
# 通過方法reduce_blood()修改屬性
d1.attack(d2)
# 輸出詳細屬性
d2.bark()
建立一個名為Car的類,其方法__init__() 設定兩個屬性:name和brand(品牌)。
定義一個名為show()的方法,功能是列印出汽車的名稱和品牌。
定義一個名為run()的方法,列印:汽車XX跑起來了。其中XX表示汽車的name.
根據這個類建立一個名為car的範例,先通過屬性直接列印其兩個屬性,再呼叫上面的兩個方法。
# -*- coding: gbk -*-
# 建立一個名為Car的物件
class Car:
# 構造__init__方法傳值並輸出name和brand
def __init__(self,name,brand):
self.name = name
self.brand = brand
# 構造show方法來輸出範例的屬性值
def show(self):
print self.name
print self.brand
# 構造run方法來讓汽車跑起來
def run(self):
print '{}跑起來了~'.format(self.name)
# 直接輸出範例的屬性
car = Car('Evo','Mitsubishi')
print car.name,car.brand
# 通過上面兩個方法輸出範例的屬性
car.show()
car.run()
根據在練習1而編寫的類建立5個範例,並對每個範例呼叫show方法。
# -*- coding: gbk -*-
# 建立一個名為Car的物件
class Car:
# 構造__init__方法傳值並輸出name和brand
def __init__(self,name,brand):
self.name = name
self.brand = brand
# 構造show方法來輸出範例的屬性值
def show(self):
print self.name
print self.brand
# 構造run方法來讓汽車跑起來
def run(self):
print '{}跑起來了~'.format(self.name)
# 建立5個範例,並對每個範例呼叫show方法
car1 = Car('Evo','三菱')
car2 = Car('翼豹','斯巴魯')
car3 = Car('Type-R','豐田')
car4 = Car('C63','賓士')
car5 = Car('GT-R','日產')
# 呼叫方法
car1.show()
car2.show()
car3.show()
car4.show()
car5.show()
建立一個名為Pig的類,其中包含屬性name和weight
定義一個名為show()方法,列印Pig的基本資訊;
再定義一個名為run() 的方法,列印:‘XX: 沒吃過豬肉,讓你看看豬跑!’。
建立多個表示不同豬的範例,並對每個範例都呼叫上述兩個方法。
# -*- coding: gbk -*-
# 建立Pig類
class Pig:
# 構造__init__方法進行傳值
def __init__(self,name,weight):
self.name = name
self.weight = weight
# 構造show方法列印基本資訊
def show(self):
print '你好!我是{},我{}kg~'.format(self.name,self.weight)
# 構造run方法輸出題目要求內容
def run(self):
print '{}:沒吃過豬肉,讓你看看豬跑~'.format(self.name)
# 範例化多個物件
pig1 = Pig('佩奇',90)
pig2 = Pig('喬治',60)
# pig1呼叫兩個方法
pig1.show()
pig1.run()
# pig2呼叫兩個方法
pig2.show()
pig2.run()
在為完成練習1的Car類中,新增一個名為number_of_people的屬性,並將其預設值設定為0。新增一個名為max_people的屬性,表示車上最多可以有幾個人。修改相應的構造方法,傳入max_people的值。
新增一個名為set_people() 的方法,它讓你能夠設定車上的人數,但是不能超過max_people的限制。
新增一個名為increase_people()的方法,每次呼叫這個方法就會讓車上的人數加1,但是不能超過max_people的限制。
新增一個名為reduce_people()的方法,每次呼叫這個方法就會讓車上的人數減少1,但是最多減少為0.
根據這個類建立一個名為car的範例,先通過屬性直接列印其兩個屬性,再呼叫上面的兩個方法。;列印有多少人在車上,然後多次呼叫以上3個方法,並列印車上的人數。
# -*- coding: gbk -*-
# 建立一個名為Car的物件
class Car:
# 構造__init__方法傳值並輸出name和brand
def __init__(self,name,brand,max_people=5):
self.name = name
self.brand = brand
self.max_people = max_people
self.number_of_people = 0
# 構造show方法來輸出範例的屬性值
def show(self):
print '{}:當前車內人數為:{}'.format(self.name,self.number_of_people)
# 構造run方法來讓汽車跑起來
def run(self):
print '{}跑起來了~'.format(self.name)
# 構造set_people方法,設定車內初始人數
def set_people(self,people):
if people <= self.max_people:
self.number_of_people = people
else:
print '超載啦!'
# 構造increase_people方法,每次呼叫車內人數加一
def increase_people(self):
if self.number_of_people+1 <= self.max_people:
self.number_of_people = self.number_of_people+1
else:
print '超載啦!'
# 構造reduce_people方法,每次呼叫車內人數減一
def reduce_people(self):
if self.number_of_people-1 >= 0:
self.number_of_people = self.number_of_people-1
else:
print '車裡已經沒人了!'
# 範例化物件car
car = Car('Evo','三菱',5)
# 通過屬性範例直接列印出屬性name和brand
print car.name,car.brand
# 呼叫題目中要求的方法,並輸出車內人數
car.increase_people()
car.reduce_people()
car.show()
# 按照題目要求,多次呼叫以上3個方法,並列印車內人數
car.set_people(5)
car.reduce_people()
car.increase_people()
car.reduce_people()
car.reduce_people()
car.increase_people()
car.reduce_people()
car.show()
car.set_people(5)
car.reduce_people()
car.increase_people()
car.reduce_people()
car.show()
car.run()