Python 面向对象实例

看视频一直不理解 if name ==‘main’:是什么意思,下面用一个事例来说明一下
我创建两个文件.py文件 一个为stu1.py stu2.py

#stu2.py
a=5
print(a)

执行结果为5

#stu1.py 调用stu2的包
import stu2
b=3
print(b)

执行结果为 5 3
我们只想要 b的结果, 但import stu2 把a的结果也加进来了
**解决方法:在stu2.py中加入 if _name == ‘main’ **就解决了
#stu2.py
a=5
if name == ‘main’:
print(a)

当运行“if namemain’:”语句时,如果当前模块时被直接执行,name__的值就是__main,条件判断的结果为True,“if namemain’:”下面的代码块就会被执行。
一、面向对象特点
在这里插入图片描述
封装:类是一种封装,把属性和方法封装。函数是一种封装,将一定逻辑的代码封装在函数里,有需要的时候调用
继承:将具有共性的属性和方法放在父类中,而子类不仅具有父类的属性和特点,还有自己独特的属性和特点
多态:可以简单理解为 不同子类调用同一方法,不同结果。例如:卡这一声响,导演听见了 是要开启拍摄了;理发师听见了 是要剪头发了。

基本语法

class Book():
    count = 0
    def __init__(self,title,price,author):
              #标记图书的本数
        self.title=title    #属性初始化
        self.price=price
        self.author=author
        Book.count += 1   #每次生成实例时,count计数器+1
    def _repr_(self):    #repr()函数:将值转化为供解释器读取的字符串形式
        return '<图书>的名称:{}'.format(self.title)
    def _str_(self):   #str()函数:将值转化为适于人阅读的字符串的形式
        return '<图书>的名称:{}'.format(self.title)
    def static_method():    #类函数,()括号里不用添加参数实例
        print('静态函数与实例无关')
if __name__=='__main__':
    book1 = Book('C语言入门',20,'Tom')
    book2 = Book('Python语言入门', 32, 'mi')
    book3 = Book('C++语言入门', 35, 'Marry')
    print('图书的数量为:{}'.format(Book.count))
    print(book1.title)
    Book.static_method()

执行结果:

图书的数量为:3
C语言入门
静态函数与实例无关

2.继承和多态的简单例子

import datetime

class Employee():
    def __init__(self,department,name,birthdate,salary):
        self.department=department
        self.name=name
        self.birthdate=birthdate
        self.salary=salary
    @property   #装饰器,把age方法变成属性调用
    def age(self): #用系统时间 减去 生日时间,得到目前的年龄
        return datetime.date.today().year-self.birthdate.year
    def working(self):
        print('员工:{},在工作'.format(self.name))

class Programer( Employee ):  #程序员为子类,继承员工的属性和特点
    def __init__(self,deapertment,name,birthdate,salary,speciality,project):
        super().__init__(deapertment,name,birthdate,salary)   #从父类继承到以下的属性,交给super()初始化
        self.speciality=speciality
        self.project=project
    def working(self):    #子类的working方法与父类的working方法 同名 叫做代码重写
        print('程序员{}在开发项目{}'.format(self.name,self.project ))

if __name__ == '__main__' :
    p=Programer('技术部','Tom',datetime.date(1990,3,1),8000,'dev','Frask')
    print(p.department)
    print(p.age)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值