zoukankan      html  css  js  c++  java
  • python基础13-类

    类:
    
    参考文档:jianshu.com/p/202a289fb2d9
    
    Python3 中类的静态方法、普通方法、类方法
    
    静态方法: 用 @staticmethod 装饰的不带 self 参数的方法叫做静态方法,类的静态方法可以没有参数,可以直接使用类名调用。
    
    普通方法: 默认有个self参数,且只能被对象调用。
    
    类方法: 默认有个 cls 参数,可以被类和对象调用,需要加上 @classmethod 装饰器
    
    
    class Classname:
        @staticmethod
        def fun():
            print('静态方法')
    
        @classmethod
        def a(cls):
            print('类方法')
    
        # 普通方法
        def b(self):
            print('普通方法')
    
    
    
    Classname.fun()
    Classname.a()
    Classname().b()
    
    C = Classname()
    C.fun()
    C.a()
    C.b()
    
    
    
    
    class Dog():
        # 初始化包含 类的属性
        """
        __init()__:每当类Dog 创建新实例 python都会自动运行他
        """
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
        # 行为 坐
        def sit(self):
            print(self.name.title()  + "is now sitting.")
    
        # 行为 打滚
        def roll_over(self):
            print(self.name.title() + "rolled over !")
    
    my_dog = Dog("小花",2) # 在类中传入初始化的参数
    
    # 访问属性
    print("my dog name is "+ my_dog.name.title()+".")    # 只用了初始化参数
    print("my dog is "+ str(my_dog.age)+ " years old .")
    
    # 调用方法
    my_dog.sit()      # 调用类里面的方法
    my_dog.roll_over()
    
    
    
    
    
    # * 使用类和实例
    class Car():
        def __init__(self,make,model,year):
            self.make = make
            self.model = model
            self.year = year
        def get_desc_name(self):
            long_time = str(self.year) + " " + self.make +" " + self.model  # 调用初始化方法的 参数
            return long_time
    
    my_car = Car("audi","a4",2016)  # 类里面可以直接传 初始化的实参
    print(my_car.get_desc_name())
    
    
    
    # 统计创建的对象数:
    class Tool(object):
    
        # 使用赋值语句,定义类属性,记录创建工具对象的总数
        count = 0
    
        def __init__(self, name):
            self.name = name
    
            # 针对类属性做一个计数+1
            Tool.count += 1
    
    
    # 创建工具对象
    tool1 = Tool("斧头")
    tool2 = Tool("榔头")
    tool3 = Tool("铁锹")
    
    # 知道使用 Tool 类到底创建了多少个对象?
    print("现在创建了 %d 个工具" % Tool.count)
    
    
    
    """
    继承:
        编写的类是 另一个现成类的特使版本 --可使用继承
        子类自动继承了父类的 所有属性和方法,同时还可以自己定义自己的属性和方法
        参考文档:https://www.cnblogs.com/feeland/p/4419121.html
    """
    
    案例:
    
    class Person(object):
        def __init__(self,name,sex):
            self.name = name
            self.sex = sex
    
        def print_title(self):
            if self.sex == "male":
                print("man")
            elif self.sex == "female":
                print("woman")
    
    class Child(Person):                            # Child 继承 Person
        pass
    
    May = Child("May","female")
    Peter = Person("Peter","male")
    
    print(May.name,May.sex,Peter.name,Peter.sex)    # 子类继承父类方法及属性
    May.print_title()
    Peter.print_title()
  • 相关阅读:
    java源码之HashMap和HashTable的异同
    java源码之HashMap
    进制转换
    java基本数据类型及其包装类
    java实例化对象的五种方法
    20 栈的压入、弹出序列
    19 包含min函数的栈
    18 顺时针打印矩阵(记忆,常忘记)
    16 树的子结构(这题多复习)
    15合并两个排序的链表
  • 原文地址:https://www.cnblogs.com/zhuanfang/p/13650508.html
Copyright © 2011-2022 走看看