html5 网站源代码,爬虫做网站相关教程,集约化网站建设情况经验材料,深圳市住房和建设局领导一、 if __name__ __main__ if __name__ __main__的意思是#xff1a; 当.py文件被直接运行时#xff0c;if __name__ __main__之下的代码块将被运行#xff1b; 当.py文件以模块形式被导入时#xff0c;if __name__ __main__之下的代码块不被运行。 1.1、一个 xxx.p…一、 if __name__ __main__ if __name__ __main__的意思是 当.py文件被直接运行时if __name__ __main__之下的代码块将被运行 当.py文件以模块形式被导入时if __name__ __main__之下的代码块不被运行。 1.1、一个 xxx.py 文件被其他 xxx.py 文件引用
创建一个const.py文件
PI 3.14def main():print(PI:, PI)
main()
# 运行结果PI: 3.14
写一个用于计算圆面积的area.py文件area.py文件需要用到const.py文件中的PI变量。从const.py中我们把PI变量导入area.py
from const import PIdef calc_round_area(radius):return PI * (radius ** 2)def main():print(round area: , calc_round_area(2))main()
运行结果
PI: 3.14
round area: 12.561.2 修改const.py添加if __name__ __main__ 我们看到const.py中的main函数也被运行了实际上我们不希望它被运行因为const.py提供的main函数只是为了测试常量定义。这时if __name__ __main__派上了用场我们把const.py改一下添加if __name__ __main__
PI 3.14def main():print(PI:, PI)if __name__ __main__:main()运行结果
PI: 3.14
导入const.py运行area.py
输出结果
round area: 12.56#不显示PI: 3.14
二、__init__与self
2.1 Python中self的含义 self英文单词意思很明显表示自己本身。python的self是个对象Object是当前类的实例
2.2 Python中为何要有self 在定义一个类时首先需要定义一个构造函数。构造函数是用来初始化对象的属性的。在Python中构造函数的第一个参数通常是self。self代表当前的对象实例可以用来引用该对象的属性和方法。 在Python中如果要使用一个对象的属性或方法首先需要实例化对象。实例化对象是指创建一个对象的实例也就是根据类创建一个具体的对象。在实例化对象时通常需要传入一些参数来初始化对象的属性。 Python中就规定好了函数的第一个参数就必须是实例对象本身并且建议约定俗成把其名字写为self 2.3_init__方法的作用: __init__ 方法是 Python 中面向对象编程中类的特殊方法也称为构造方法当创建一个类的实例时__init__ 方法会自动调用。 它的主要作用是初始化实例的属性实例变量是对象的属性用于存储数据。在实例被创建后你可以通过这些属性对实例进行操作。每个类可以定义多个不同的 __init__ 方法但通常情况下在类中只有一个在这种情况下在创建类的实例时必须提供所需的参数。
def __init__(self, 参数1, 参数2, ...):初始化语句1初始化语句2...
实例在类中使用 init 方法初始化类的属性
class Dog:def __init__(self, breed, name, age):self.breed breedself.name nameself.age agedog Dog(Labrador, Max, 3)print(dog.breed) # Output: Labrador
print(dog.name) # Output: Max
print(dog.age) # Output: 3 在这个例子中我们创建了一个名为 Dog 的类并且定义了 init 方法。 init 方法接收三个参数breed, name 和 age并且通过 self. 前缀来设置类的属性。最后我们创建了一个名为 dog 的对象并且初始化了它的 breed, name 和 age 属性。 2.4__init__()和self对象
class Person(object):def __init__(self, name, lang, website):self.name nameself.lang langself.website websiteprint(self: , self)print(type of self: , type(self))未实例化时运行程序构造方法没有运行
p Person(Tim, English, www.universal.com) 实例化后运行的结果
self: __main__.Person object at 0x00000000021EAF98
type of self: class __main__.Person可以看出self为实例变量p是一个Person类型的对象
class Dog(object): def __init__(self,name,dog_type):self.name nameself.type dog_typedef sayhi(self):print(hello,I am a dog, my name is ,self.name)d Dog(LiChuang,京巴) # 实例化
d.sayhi()
以下是d Dog(LiChuang,京巴)实例化的示意图 2.5 如果没有在__init__中初始化对应的实例变量的话导致后续引用实例变量会出错 如下代码完整的演示了如果没有在类Class的最初的__init__函数中正确的初始化实例变量则会导致后续没有变量可用因而出现AttributeError的错误
name whole global name注此处全局的变量名写成name只是为了演示而用
实际上好的编程风格应该写成gName之类的名字
以表示该变量是Global的变量
class Person(object):def __init__(self, newPersonName):# self.name newPersonName如果此处不写成self.name那么此处的name只是__init__函数中的局部临时变量name而已和全局中的name没有半毛钱关系name newPersonName此处只是为了代码演示而使用了局部变量name不过需要注意的是此处很明显由于接下来的代码也没有利用到此处的局部变量name则就导致了此处的name变量实际上被浪费了根本没有利用到def sayYourName(self):此处由于找不到实例中的name变量所以会报错AttributeError: Person instance has no attribute nameprint(My name is %s %self.name)def selfAndInitDemo():personInstance Person(Tim)personInstance.sayYourName()if __name__ __main__:selfAndInitDemo() 未使用self.name时抛异常
Traceback (most recent call last):File E:/python14_workspace/s14/day06/test_1.py, line 18, in moduleselfAndInitDemo()File E:/python14_workspace/s14/day06/test_1.py, line 15, in selfAndInitDemopersonInstance.sayYourName()File E:/python14_workspace/s14/day06/test_1.py, line 11, in sayYourNameprint(My name is %s %self.name)
AttributeError: Person object has no attribute name从上述代码可见由于在类的初始化实例化的__init__函数中没有给self.name设置值使得实例中根本没有name这个变量导致后续再去访问self.name就会出现AttributeError的错误了。
对应的如果写成self.name则意思就正确了就是初始化的时候给实例中新增加并且正常设置了正确的值newPersionName了所以后续再去通过self.name就可以访问到当前实例中正确的变量name了。
相应的正确写法的代码如下
name whole global name注此处全局的变量名写成name只是为了演示而用
实际上好的编程风格应该写成gName之类的名字
以表示该变量是Global的变量
class Person(object):def __init__(self, newPersonName):self.name newPersonName此处正确的通过访问self.name的形式实现了1.给实例中增加了name变量2.并且给name赋了初值为newPersionNamedef sayYourName(self):此处由于开始正确的初始化了self对象使得其中有了name变量所以此处可以正确访问了name值了print(My name is %s %self.name)def selfAndInitDemo():personInstance Person(Tim)personInstance.sayYourName()if __name__ __main__:selfAndInitDemo()My name is Tim