1. 什么是類,什么是對(duì)象?
- 類:對(duì)一類事物的描述,是抽象的、概念上的定義。
- 對(duì)象:實(shí)際存在的該類事物的每個(gè)個(gè)體,因而也稱實(shí)例(instance)。
類是對(duì)象的抽象,對(duì)象是類的實(shí)例。
2. python中如何定義一個(gè)類的格式
class 類名(object):
成員(方法)
3. 類(class)由哪三個(gè)部分構(gòu)成
類名,屬性,方法。
4. 類名的命名規(guī)則是什么
要遵循標(biāo)識(shí)符的命名規(guī)范,盡量使用大駝峰命名法,命名時(shí)做到“見名思意”。
5. python中如何通過類創(chuàng)建對(duì)象
對(duì)象名 = 類名()
6. 定義一個(gè)Person類,使用Person類,創(chuàng)建一個(gè)mayun對(duì)象后,添加company屬性,值是"阿里巴巴";創(chuàng)建一個(gè)wangjianlin對(duì)象,添加company屬性,值是"萬(wàn)達(dá)集團(tuán)"
# Person類
class Person(object):
pass
# mayun對(duì)象
mayan = Person()
mayan.company = "阿里巴巴"
# wangjianlin對(duì)象
wangjianlin = Person()
mayan.company = "萬(wàn)達(dá)集團(tuán)"
7. 定義一個(gè)水果類,然后通過水果類,創(chuàng)建蘋果對(duì)象、橘子對(duì)象、西瓜對(duì)象并分別添加上顏色屬性
# 水果類
class Fruits(object):
pass
# 蘋果對(duì)象
apple = Fruits()
apple.color = "red"
# 橘子對(duì)象
tangerine = Fruits()
tangerine.color = "orange"
# 西瓜對(duì)象
watermelon = Fruits()
watermelon.color = "green"
8. init方法有什么作用,如何定義
__init__方法用來(lái)監(jiān)聽對(duì)象的實(shí)例過程。
def __init__(self):
pass
9. str方法有什么作用,使用時(shí)應(yīng)注意什么問題
__str__方法用來(lái)追蹤對(duì)象的屬性值的變化的。
-
__str__方法不能再添加任何參數(shù), -
__str__方法必須有一個(gè)返回值,返回值必須為字符串類型。
10. 方法中的"self"代表什么
self代表的是類的實(shí)例對(duì)象(注意不是類本身)。
11. 定義一個(gè)汽車類,并在類中定義一個(gè)move方法,然后分別創(chuàng)建BMW_X9、AUDI_A9對(duì)象,并添加顏色、馬力、型號(hào)等屬性,然后分別打印出屬性值、調(diào)用move方法(使用init方法完成屬性賦值)
# 汽車類
class Car(object):
def __init__(self, color, speed, type):
self.color = color
self.speed = speed
self.type = type
def move(self):
print("汽車開始跑了")
# BMW_X9對(duì)象
BMW_X9 = Car("red", 80, "F4")
print(BMW_X9.color, BMW_X9.speed, BMW_X9.type)
BMW_X9.move()
# AUDI_A9對(duì)象
AUDI_A9 = Car("black", 100, "S3")
print(AUDI_A9.color, AUDI_A9.speed, AUDI_A9.type)
AUDI_A9.move()
12. 將身邊的一個(gè)事物抽象出一個(gè)類。比如老師、學(xué)生、桌子、椅子、蘋果、香蕉、枕頭、被子或任意物品
- 提供基本屬性、基本的方法。
- 通過類創(chuàng)建出幾個(gè)不同的對(duì)象。
- 打印它們的屬性、調(diào)用它們的方法。
# Person類
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def play(self):
print("我可以玩")
# Article類
class Article(object):
def __init__(self, width, height):
self.width = width
self.height = height
def func(self):
print("我可以放東西")
# Article類
class Fruits(object):
def __init__(self, color, weight):
self.color = color
self.weight = weight
def eat(self):
print("我可以被吃")
# lisi
lisi = Person("李思", 18)
print(lisi.name, lisi.age)
lisi.play()
# desk
desk = Article(80, 100)
print(desk.width, desk.height)
desk.func()
# apple
apple = Fruits("red", 10)
print(apple.color, apple.weight)
apple.eat()
13. 要修改一個(gè)對(duì)象的屬性有幾種方法,分別是什么?
- 直接修改屬性的值。
- 通過方法修改屬性的值。
- 通過方法對(duì)屬性的值進(jìn)行遞增/減。
14. 保護(hù)屬性安全性的一般處理方式是什么?
把這個(gè)屬性設(shè)置為私有的,通過一些封裝的方法進(jìn)行操作。
15. 要想將一個(gè)屬性私有化,該怎么做?
在屬性名前面加上兩個(gè)下劃線,即:__屬性名。
16. 定義一個(gè)People類,其中要有類的初始化函數(shù)(帶參數(shù)name)
# Person類
class Person(object):
def __init__(self, name):
self.name = name
17. 如何將上述的name改成私有屬性
self.__name = name
18. 如果子類中沒有定義init方法,但是要實(shí)例化一個(gè)對(duì)象,那此時(shí)會(huì)調(diào)用父類的構(gòu)造方法嗎?
如果本身沒有定義init方法,會(huì)調(diào)用直接繼承給它的第一個(gè)父類的init方法。
19. 簡(jiǎn)單描述什么是單繼承
一個(gè)子類只能有一個(gè)父類,被稱為單繼承。
20. 如果子類重寫了init方法,那么在實(shí)例化對(duì)象的時(shí)候,你覺得會(huì)調(diào)用哪個(gè)構(gòu)造方法,是父類的還是子類的?
子類重寫了init方法,默認(rèn)會(huì)調(diào)用自己的。
21. 當(dāng)子類重寫init方法,在實(shí)例化對(duì)象的時(shí)候,如果想要調(diào)用父類的init方法該怎么辦?
需要顯示進(jìn)行調(diào)用,即:super().__init__()。
22. 定義一個(gè)類,提供可以重新設(shè)置私有屬性name的方法,限制條件為字符串長(zhǎng)度小于10,才可以修改。
# Person類
class Person(object):
def __init__(self):
self.__name = ""
def set_name(self, name):
if len(name) < 10:
self.__name = name
23. 在一個(gè)對(duì)象銷毀的時(shí)候,可以在什么函數(shù)釋放資源?
通過魔法方法,__del__。
24. 簡(jiǎn)單描述什么是多繼承
一個(gè)子類可以有多個(gè)父類,稱為多繼承。
25. 簡(jiǎn)單描述什么是重寫?
子類不想原封不動(dòng)地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫。方法重寫又稱方法覆蓋。
