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

五、继承:

单继承

多继承:

左边优先级最高

六、复写:

七、多态:

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐