python對象淺入門

#面向對象基礎:類及對象的創建,實例屬性的初始化,訪問及修改
class Dog():


    #構造函數,每次對象創建時調用,同java,但每個類只能有一個
    def __init__(self, name, age):
        self.name = name     #self.name屬性爲實例屬性,可通過實例名.屬性名訪問;亦可通過方法訪問修改同java的public屬性
        self.age = age

    def sit(self):
        print(self.name.title()+" is now sitting")

    def roll_over(self):
        print(self.name.title()+" rolled over!")


my_dog = Dog("willie", 6)
print("My dog's name is "+my_dog.name.title() + ".")
print("MY dog is "+ str(my_dog.age) + " years ol.")



#python繼承,python是多繼承的,繼承一個類則代表繼承了類的所有方法和屬性,同java裏父類的屬性方法都是public的情況類似
#python多繼承,方法,屬性的獲取通過MRO(method resoulution order)查找,即每個類的__mro__屬性

class Car():
    __num = "1233"   #變量名前加__代表是私有變量同java的private
    count = "0"

    @classmethod        #類方法,通過類名.方法名調用,可以被繼承
    def get_num(cls):
        return cls.__num

    @staticmethod
    def showTime():    #可以通過對象實例及其子類對象方法,也可通過類名訪問
        print("我是靜態方法")

    def __init__(self, make, model, year  ):
        print("i'm the father class .")
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0   #odometer_reading默認值爲0

    def get_descriptive_name(self):
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        return  long_name.title()

    def read_odometer(self):
        print("This car has "+ str(self.odometer_reading) + " miles on it.")

    def update_odometer(self, mileage):
        if mileage >= self.odometer_reading:
            self.odometer_reading=mileage
        else:
            print(" You can't roll back an odometer !")

    def increment_odometer(self, miles):
        self.odometer_reading += miles
#繼承car
class ElectricCar(Car):
    def __init__(self, make, model, year):
        super().__init__(make, model, year)
        print("i'm the child class. ")


my_test = ElectricCar('tesla', 'modele s', 2016)
print(my_test.get_descriptive_name())  #通過子類對象調用繼承的父類方法
print(Car.get_num())
print(ElectricCar.get_num())
print(Car.count)                #通過對象實例訪問類屬性
print(my_test.showTime())        #通過對象實例訪問靜態方法
print(ElectricCar.showTime())   #通過類名訪問靜態方法
#print(Car.__num) 私有變量不能被訪問





































 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章