亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

章節
問答
課簽
筆記
評論
占位
占位

Python實例屬性的初始化

通過前面的方式定義一個實例的屬性非常方便,但也有一些問題。
首先,如果定義屬性的過程中使用了不同的屬性名字,比如性別,前者使用了
sex,后者使用了gender,那對于一個類的不同實例,存儲一個信息就用了兩個不同的屬性,在后面將會難以維護。
其次,名字、性別、年齡等等,都是人的基本信息,在抽象一個類的時候,理應包含這些信息。
在定義 Person 類時,可以為Person類添加一個特殊的__init__()方法,當創建實例時,__init__()方法被自動調用,我們就能在此為每個實例都統一加上以下屬性:

class Person(object):
    def __init__(self, name, sex, age):
        self.name = name
        self.sex = sex
        self.age = age

需要注意的是,__init__() 方法的第一個參數必須是 self(也可以用別的名字,但建議使用習慣用法),后續參數則可以自由指定,和定義函數沒有任何區別。
定義類后,就可以相應的實例化對象了,需要注意的是,在實例化的時候,需要提供除
self以外的所有參數。

xiaoming = Person('Xiao Ming', 'boy', 13)
xiaohong = Person('Xiao Hong', 'girl', 14)

而訪問這些屬性的方式和之前的一樣:

print(xiaohong.name)
print(xiaohong.sex)
print(xiaohong.age)
# 但當訪問不存在的屬性時,依然會報錯
print(xiaohong.birth)

要特別注意的是,初學者定義__init__()方法常常忘記了 self 參數,比如如下的定義:

class Person(object):
    def __init__(name, sex, age):
        pass

這種情況下,如果還是如下實例化,將會報錯。

xiaoming = Person('Xiao Ming', 'boy', 13)
xiaohong = Person('Xiao Hong', 'girl', 14)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() takes 3 positional arguments but 4 were given

任務

請定義一個動物類,抽象出名字、年齡兩個屬性,并實例化兩個實例dog, cat。

?不會了怎么辦

參考答案:

class Animal(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

dog = Animal('wangwang', 1)
cat = Animal('mimi', 3)
print(dog.name)
print(dog.age)
print(cat.name)
print(cat.age)
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務號

綁定后可得到

  • · 粉絲專屬優惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復提醒
  • · 賬號支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請您關注公眾號
關注后,及時獲悉本課程動態

舉報

0/150
提交
取消
全部 精華 我要發布
全部 我要發布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?