档案网站建设经验vps绑定多个网站

当前位置: 首页 > news >正文

档案网站建设经验,vps绑定多个网站,wordpress 添加用户登录,天津网站建设公类与对象的理解#xff1a; 在程序中我们将类看作是设计图纸#xff0c;对象则是根据这个图纸生产的产品。面向对象编程就是使用对象编程#xff0c;在类中我们定义成员属性和方法。 来看下面这个例子#xff0c;创建student类#xff0c;定义对象并对属性赋值。 class S…  类与对象的理解 在程序中我们将类看作是设计图纸对象则是根据这个图纸生产的产品。面向对象编程就是使用对象编程在类中我们定义成员属性和方法。 来看下面这个例子创建student类定义对象并对属性赋值。 class Student:nameNoneageNonedef say_hai1(self):print(f大家好我是{self.name})def say_hai2(self,msg):print(f大家好我是{self.name},{msg})stu_1Student() stu_1.name张三 stu_1.say_hai1()stu_2Student() stu_2.name王五 stu_2.say_hai2(请多多关照) 构造方法 语法init构造方法创建对象时参数自动传递给init使用注意构造方法也要使用self。 在init方法里自动声明前面可以不用先声明。 如下代码 class Student:nameNone # 可省略ageNone # 可省略def init(self,name,age):self.namenameself.ageageprint(构造函数执行完毕)stuStudent(iyizuohz,20) print(stu.name)运行结果 构造方法的练习 使用构造方法循环输入三个学生的姓名年龄地址使输出结果如下最后打印全部学生的信息。 思路  在类中定义两个方法一个用于循环输入学生信息一个用来打印全部学生的信息学生的信息通过列表来存储其中学生的姓名等信息是字典的键值对形式。 代码 class Student:def init(self):self.students [] # 建立一个空列表用于存储学生信息for i in range(3):print(f当前录入第{i1}个学生的信息,总共需要录入3个学生的信息)name input(请输入学生姓名:)age input(请输入学生年龄:)address input(请输入学生地址:)# 将学生信息以字典的形式存储到列表中self.students.append({name: name, age: age, address: address}) # 存储学生信息print(f学生{i1}的信息录入成功信息为【学生姓名{name}年龄{age}地址{address}】)def print_students(self):print(所有学生的信息如下)for student in self.students:print(f姓名{student[name]}, 年龄{student[age]}, 地址{student[address]})s Student() s.print_students() # 打印所有学生的信息以下代码是常见的错误写法 有以下几个错误原因 1、属性引用错误在 self.students.append 的字典中应该访问 name、age 和 address 变量而不是 self.name、self.age 和 self.address因为这些变量仅在 for 循环的局部作用域中定义并没有将它们作为类的属性进行存储。 2、函数参数不需要写除了self以外的函数传递参数。 class Studet:def init(self, name, age, grade):self.name nameself.age agestudent1 Studet(John, 18, 12) print(student1) print(str(student1)) 魔术方法 魔术方法Magic Methods是Python中的特殊方法以双下划线开头和结尾用于在类中定义特殊行为和操作。这些方法可以被Python解释器直接调用而不需要显式地调用。 以下是一些常见的魔术方法及其功能 init(self, …): 初始化方法用于创建对象实例时进行初始化操作。 str(self): 返回对象的字符串表示形式可以通过内置函数str()或print()调用。 repr(self): 返回对象的可打印字符串表示形式可以通过内置函数repr()调用。 len(self): 返回对象的长度可以通过内置函数len()调用。
这些魔术方法可以帮助我们定制类的行为并在特定情况下自动调用相应的方法。 class Studet:def init(self, name, age, grade):self.name nameself.age ageself.grade gradedef str(self):return fStudent类对象name{self.name}, age{self.age}, grade{self.grade}student1 Studet(John, 18, 12) print(student1)封装 现实生活中的属性和行为对应类中的成员方法和成员变量。但这些属性和行为并不全对用户开放如一部手机的运行电压驱动信息并不能让用用户来操作所以我们需要提供私有成员的形式来支持。 例如以下代码定义了一个名为Person的类其中包含了一个私有属性和一个私有方法 class Person:def init(self, name, age):self.name nameself.age agedef display(self):print(Name: {}, Age: {}.format(self.name, self.age)) 注意类中内部的成员可以访问私有  。 练习 打电话时用户不用检查5G状态而由程序内部检查但需要告诉用户当前是否在使用5G通话。 即将检查5G的函数定义为私有将打电话的函数定义为公有。 class Phone:is_5g_enabled Falsedef check_5g(self):if self.is_5g_enabled:print(5G开启)return Trueelse:print(5G关闭使用4G网络)return Falsedef call_by_5g(self):if self.__check_5g():print(正在使用5G网络通话)else:print(正在使用4G网络通话)phone Phone() phone.call_by_5g() 继承 单继承 看以下例子其中 Phone 是一个基础类提供了通过4G拨打电话的方法。NewPhone 是 Phone 的子类新增了一个通过5G拨打电话的方法在newPhone中依旧可以调用4G拨打电话的方法。

单继承

class Phone:IMEINoneproducerNonedef call_by_4G(self):print(Calling by 4G)class NewPhone(Phone):face_id10002def call_by_5G(self):print(Calling by 5G)p1NewPhone() p1.call_by_4G() p1.call_by_5G() 多继承 多继承对于父类同名的成员优先级从左至右。 class Phone:IMEINoneproducerUSAdef call_by_4G(self):print(Calling by 4G)class NFCReader:nfc_idNoneproducer CHINAdef read_nfc_id(self):print(Reading NFC ID)def write_nfc_id(self):print(Writing NFC ID)class XiaomiPhone(Phone,NFCReader):# 不再创建新的功能使用pass语句pass # 空语句表示不实现任何功能phone XiaomiPhone() phone.call_by_4G() print(phone.producer) # USA复写: 如果子类对父类的属性或方法不满意可以进行重写直接修改即可。 class Phone:IMEINoneproducerUSAdef call_by_4G(self):print(Calling by 4G)class NFCReader:nfc_idNoneproducer CHINAdef read_nfc_id(self):print(Reading NFC ID)def write_nfc_id(self):print(Writing NFC ID)class XiaomiPhone(Phone,NFCReader):producer ENGLANDdef call_by_4G(self):print(cutting electricity to call)print(Calling by 4G)phone XiaomiPhone() phone.call_by_4G() print(phone.producer) # USA# 如果使用如果还想继续使用父类的成员有两种方式直接通过父类名调用或者通过super()调用 代码演示 class Phone:IMEINoneproducerUSAdef call_by_4G(self):print(Calling by 4G)class XiaomiPhone(Phone):def call_by_4G(self):print(cutting electricity to call)# 调用父类的成员和方法#法一直接通过父类名调用print(f调用父类{Phone.producer})Phone.call_by_4G(self)# 传入self#法二通过super()调用print(f调用父类{super().producer})super().call_by_4G() # 不用传入selfphone XiaomiPhone() phone.call_by_4G()# 如果使用