开发者

Python面向对象之类和对象

目录
    • 定义类
    • 定义类和属性
    • 类中方法
      • 对象方法(普通方法)
      • 类方法
      • 静态方法
      • 魔术方法
  • 对象
    • 创建对象
      • 对象属性
      • 总结

        定义类

        • 所有类名首字母要求大写,多个单词时遵循驼峰命名法
        • 所有未定义父类的类都继承object

        格式:class 类名[(父类)]:

        #两种方式意思相同
        class Person:
            pass 
        class Person(object):
            pass

        定义类和编程客栈属性

        name、age、subject就是类属性

        class Student:
            #类属性
            name = ''
            age = 0
            subject = []

        类中方法

        对象方法(普通方法)

        格式:
        def 方法名(self[,parm1,parm2...]):
            pass

        self就是对象本身

        class Student:
            # 类属性
            name = 'student'
            age = 0
            subject = []
           # 普通方法
            def study(self):
                print(self.name, '正在学习...') 
        xiaoming = Student()
        xiaoming.name = 'xiaoming'
        xiaoming.study() 
        

        ------------

        输出:

        xiaoming 正在学习...

        class Student:
            # 类属性
            name = 'student'
            age = 0
            subject = []
           # 普通方法
            def study(self, name):
                print(name, '正在学习...') 
        s1 = Student()
        s1.study('xiaohong')
         

        ----------------

        输出:

        xiaohong 正在学习...

        类方法

        格式:
        @classmethod
        def 方法名(cls):
            pass
        • 类方法使用@classmethod装饰器
        • 对www.cppcns.com象方法传入的是self,类方法传入的是cls
        • 类方法可以直接用类调用,或者可以用类的实例(对象)调用
        class Dog:
            dog_type = '阿拉斯加'
           def __init__(self, nickname):
                self.name = nickname
           def dog_run(self):
                print('{}在公园里跑.看起来是一只{}.'.format(self.name, self.dog_type))
           @classmethod
            def dog_sit(cls):
                print(cls.dog_type, '很乖,坐下了') 
        dog1 = Dog('肉丸')
        dog1.dog_type = '小泰迪'
        doghttp://www.cppcns.com1.dog_run()
        Dog.dog_sit() 
        

        --------------

        输出:

        肉丸在公园里跑.看起来是一只小泰迪.

        阿拉斯加 很乖,坐下了

        静态方法

        • 静态方法使用装饰器@staticmethod
        • 静态方法没有参数
        • 当方法跟类属性和对象属性都没有关系的时候,使用静态方法
        • 支持对象和类名直接调用
        class Dog:
            def __init__(self, nickname):
                self.name = nickname
           @staticmethod
            def dog_sit():
                print('很乖,坐下了') 
        dog1 = Dog('肉丸')
        dog1.dog_sit()
        Dog.dog_sit() 
        ---------------------
        

        输出:

        很乖,坐下了

        很乖,坐下了

        魔术方法

        格式:
        def __方法名__(self):
            pass

        __init__() 构造函数

        • 如果没有__init__。直接利用类向内存申请一个和类一样的空间,给到对象。
        • 如果有__init__。利用类向内存申请一个和类一样空间,内存空间(self)传递给__iniy__,执行__init__的函数。最后将内存空间给到对象。

        对象

        创建对象

        格式:对象名 = 类名()

        class Student:
            #类属性
            name = ''
            age = 0
            subject = [] 
        xiaoming = Student()

        对象属性

        • 当创建了对象时,对象会继承类的属性。获取属性的时候,也是从类中获取属性。
        • 当对默认的类属性赋值后(对象名.属性 = xxxx),属性才会变成对象属性。
        class Student:
            # 类属性
            name = 'student'
            age = 0
            subject = [] 
        xiaoming = Student()
        print('类属性:', xiaoming.name)  # 此时是从类中获取的类属性
        xiaoming.name = 'xiaoming'  # 因为赋值了,此时变成了对象属性
        print('对象属性:', http://www.cppcns.comxiaoming.name) 
        -------------
        

        输出:

        类属性: st编程客栈udent

        对象属性: xiaoming

        总结

        本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

        0

        上一篇:

        下一篇:

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        最新开发

        开发排行榜