python繼續找對象詳解

面向對象三大特征:封裝、繼承、多態

在這裡插入圖片描述

1、封裝(提高程序的安全性)

class Car:
    def __init__(self,brand):
        self.brand=brand
    def start(self):
        print('自行車已被蹬跑')
car=Car('自行車')
car.start()
print(car.brand)

運行結果

自行車已被蹬跑
自行車

在這裡插入圖片描述

一開始它報錯說沒有定義name,我找老大一會不知道哪錯瞭,原來是第六行

self.name,那個時候寫成,瞭。

看在stu裡邊有哪些方法?就這樣寫

在這裡插入圖片描述

在類的外部可以通過_Student(類名)_ _age(不希望被訪問的)進行訪問

class Student:
    def __init__(self,name,age):
        self.name=name
        self.__age=age #年齡不希望在類的外部使用,所以加瞭兩個_
    def show(self):
        print(self.name,self.__age)
stu=Student('張三',20)
stu.show()
#在類的外部使用name和age
print(stu.name)
print(dir(stu))
print(stu._Student__age)
張三 20
張三
['_Student__age', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name', 'show']
20

2、繼承(提高代碼的復用性)

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

class Person(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def info(self):
        print(self.name,self.age)
class Student(Person):
    def __init__(self,name,age,stu_no):
        super().__init__(name,age)
        self.stu_no=stu_no
class Teacher(Person):
    def __init__(self,name,age,teacherofyear):
        super(Teacher, self).__init__(name,age)
        self.teacherofyear=teacherofyear
stu=Student('張三',20,'1001')
teacher=Teacher('李四',34,10)
stu.info()
teacher.info()

張三 20
李四 34

3、方法重寫

在這裡插入圖片描述

此時隻能輸出學號,不滿足需求

class Person(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def info(self):
        print(self.name,self.age)
class Student(Person):
    def __init__(self,name,age,stu_no):
        super().__init__(name,age)
        self.stu_no=stu_no
    def info(self):
        print(self.stu_no)
class Teacher(Person):
    def __init__(self,name,age,teacherofyear):
        super(Teacher, self).__init__(name,age)
        self.teacherofyear=teacherofyear
stu=Student('張三',20,'1001')
teacher=Teacher('李四',34,10)
stu.info()
teacher.info()

1001
李四 34

看下邊的重載

class Person(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def info(self):
        print(self.name,self.age)
class Student(Person):
    def __init__(self,name,age,stu_no):
        super().__init__(name,age)
        self.stu_no=stu_no
    def info(self):
        super(Student, self).info()
        print(self.stu_no)
class Teacher(Person):
    def __init__(self,name,age,teacherofyear):
        super(Teacher, self).__init__(name,age)
        self.teacherofyear=teacherofyear
stu=Student('張三',20,'1001')
teacher=Teacher('李四',34,10)
stu.info()
print('----------------------------')
teacher.info()

運行結果

張三 20
1001
—————————-
李四 34

把教齡輸出

class Person(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def info(self):
        print(self.name,self.age)
class Student(Person):
    def __init__(self,name,age,stu_no):
        super().__init__(name,age)
        self.stu_no=stu_no
    def info(self):
        super(Student, self).info()
        print(self.stu_no)
class Teacher(Person):
    def __init__(self,name,age,teachofyear):
        super().__init__(name,age)
        self.teachofyear=teachofyear
    def info(self):
        super().info()
        print('教齡',self.teachofyear)
stu=Student('張三',20,'1001')
teacher=Teacher('李四',34,10)
stu.info()
print('----------------------------')
teacher.info()

運行結果

張三 20
1001
—————————-
李四 34
教齡 10   

4、object類

在這裡插入圖片描述

5、多態(提高程序的可拓展性和可維護性)

在這裡插入圖片描述

在這裡插入圖片描述

Java就是靜態語言,python就是動態語言

6、特殊方法和特殊屬性 特殊方法

在這裡插入圖片描述

兩個特殊的方法—-創建

1初始化init

2new

特殊屬性

兩個下劃線開始,兩個下劃線結束就是特殊屬性

在這裡插入圖片描述

綁定兩個屬性

class A:
    pass
class B:
    pass
class C(A,B):
    def __init__(self,name,age):
        self.name=name
        self.age=age
#創建C類的對象
x=C('Jack',20)#x是C類的一個實例對象
print(x.__dict__)
{'name': 'Jack', 'age': 20}

pycharm使用的小發現

點擊加號那裡,就會釋放,點擊減號就會縮成這樣,這說明瞭被縮起來的內容都是隸屬於這個類的。

在這裡插入圖片描述

看最左側出現瞭箭頭,他的意思是重寫person類中的方法

在這裡插入圖片描述

英文

在這裡插入圖片描述

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: