python-类和对象、构造方法、魔术方法、封装、继承、复写、多态(笔记)
·

class Student:
name=None
age=None
sex=None
student1=Student()
student1.name="zs"
student1.age=18
student1.sex="male"
print(student1.name)
print(student1.age)
print(student1.sex)
zs
18
male
一、类的成员方法



class Student:
name=None
# 成员方法必须带上self参数,要访问类里面的属性必须带上
def getMyName(self):
print(f"my name is {self.name}")
student1=Student()
student1.name="zs"
print(student1.getMyName())
my name is zs
二、构造方法

class Student:
name=None
age=None
#覆盖了无参数构造方法
def __init__(self,name,age):
self.name=name
self.age=age
print(f"my name is {self.name} age {self.age}")
student1=Student("zs",15)
my name is zs age 15
三、魔术方法

__str__:

class Student:
name=None
age=None
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self):
return f"my name is {self.name} age {self.age}"
student1=Student("zs",15)
#直接打印对象
print(student1)
my name is zs age 15
__lt__:

class Student:
name=None
age=None
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self):
return f"my name is {self.name} age {self.age}"
#必须带上才能比较,否则报错
#当前的年龄是否小于其他人的年龄
def __lt__(self, other):
return self.age<other.age
student1=Student("zs",15)
student2=Student("zs",19)
# 15 <19
print(student1 < student2)
print(student1 > student2)
True
False
__le__:

class Student:
name=None
age=None
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self):
return f"my name is {self.name} age {self.age}"
def __le__(self, other):
return self.age<=other.age
student1=Student("zs",15)
student2=Student("zs",15)
# 15 <19
print(student1 <= student2)
# 15 <19
print(student1 >= student2)
True
True
__eq__:

class Student:
name=None
age=None
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self):
return f"my name is {self.name} age {self.age}"
def __le__(self, other):
return self.age<=other.age
# 注意如果没有添加的话那么两个对象比较的是内存地址
# def __eq__(self, other):
# return self.age==other.age
student1=Student("zs",15)
student2=Student("zs",15)
#自动调用父级的eq方法
print(student1 == student2)
False
class Student:
name=None
age=None
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self):
return f"my name is {self.name} age {self.age}"
def __le__(self, other):
return self.age<=other.age
# 注意如果没有添加的话那么两个对象比较的是内存地址
def __eq__(self, other):
return self.age==other.age
student1=Student("zs",15)
student2=Student("zs",15)
print(student1 == student2)
True
四、封装:



class Student:
name=None
age=None
__myOnlyName="zs"
def __init__(self,name,age):
self.name=name
self.age=age
#私有方法提供给本身内部使用,外部声明对象无法去调用访问,类的其他成员是可以访问的
def __getName(self):
print(f"get name {self.__myOnlyName}")
def CanGetName(self):
self.__getName()
student1=Student("zs",15)
student1.CanGetName()
get name zs

五、继承:
单继承




多继承:







左边优先级最高
六、复写:






七、多态:






更多推荐


所有评论(0)