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