Python基础

类方法、静态、实例方法、super...???

2020-04-05  本文已影响0人  lvyz0207

新增样例

一个样例,讲明白了三种方法,赞👍
类方法静态方法实例方法

import re

class Person:
    person_number = 0

    def __init__(self,name, gender):    # 构造方法:用来给对象初始化
        self.name = name
        self.gender = gender
        Person.person_number += 1

    def say_hello(self):        # 实例方法:应用在具体的对象上
        """
        1、方法占用的空间在类空间,与每一个对象进行绑定
        2、调用方法是: 对象名.方法名
        3、使用self关键字进行引用
        :return:
        """
        print("大家好,我叫:"+ self.name + ",我是" + self.gender + "生!")

    @classmethod
    def print_person_number(cls):  # 类方法:应用在类上面
        """
        1、使用关键字@classmethod
        2、类方法存储在类空间中,没有绑定到对象上
        3、调用类方法  类名.方法名
        4、访问类变量,关键字为  cls
        :return:
        """
        print("当前有:" + str(cls.person_number)+ "人!")

    @staticmethod
    def check_mobile(mobile:str):   # 静态方法: 应用字类上面
        """
        1、使用关键字@staticmethod
        2、类方法存储在类空间中,没有绑定到对象上
        3、调用类方法  类名.方法名
        4、静态方法不能访问到类中的任何资源(类变量或实例变量,self,cls)
        5、静态方法相当于工具,拿来即用
        :return:
        """
        pattern = re.compile("[1][3456789]\d{9}")
        match_result = pattern.match(mobile)
        if match_result is None:
            return False
        else:
            return True
    @property                       # 属性
    def func(self):
        """
        1、控制字段的读写  @property  只读
                        @func.setter
        2、方便进行参数校验
        对字段值的保护
        :return:
        """
        return 1


if __name__ == '__main__':
    alice = Person("Alice", "女")

    # 调用实例方法  对象名.方法名
    alice.say_hello()

    # 调用类方法  类名.方法名
    Person.print_person_number()

    # 调用静态方法  类名.方法名
    # Person.print_welcome("FPS_xiaotian")
    mobile = input("请输入手机号:")
    if Person.check_mobile(mobile):
        print("手机号输入的正确!")
    else:
        print("手机号码不正确!")



以前部分 2020-04-05

python 实例方法(静态方法、类方法、实例方法)

class Person:
    def __init__(self):
        """
        构造方法
        :return:
        """
        print("__init__方法被调用")
        pass
    name = "小明"
    gender = "male"
    age = 18
    
    def __del__(self):
        """
        析构方法
        :return:
        """
        print("__del__方法被调用!")
        pass

    @staticmethod
    def staticShow():
        """
        静态方法:@staticmethod,无参数
        :return:
        """
        print(Person.name, Person.gender, Person.age)


    @classmethod
    def classShow(cls):
        """
        类方法:有classmethod 修饰,是一个参数为cls
        :return:
        """
        print(cls.name, cls.gender, cls.age)

    def instanceShow(self):
        """
        实例方法:实例方法第一个参数为self
        :return:
        """
        print(self.name, self.gender, self.age)

p = Person()
p.instanceShow()
Person.classShow()
Person.staticShow()

# 输出
"""
__init__方法被调用
小明 male 18
小明 male 18
小明 male 18
__del__方法被调用!
"""

类的继承super函数

class Animal(object):
    def __init__(self, name):
        self.name = name

    def greet(self):
        print("父类方法greet被调用了!")


class Dog(Animal):
    def greet(self):
        super(Dog, self).greet()  #调用父类Animal的greet方法
        print('子类方法')


d=Dog("xiaohuang")

d.greet()



class Base(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b


class A(Base):
    def __init__(self, a, b, c):
        super(A, self).__init__(a, b)  # Python3 可使用 super().__init__(a, b)
        self.c = c

a=A(100,200,300)

print("a=%d, b=%d, c=%d" % (a.a,a.b,a.c))

# 输出
父类方法greet被调用了!
子类方法
a=100, b=200, c=300

子类对父类的继承,并在父类的基础上重写了部分方法,称之为“多态

class Person(object):
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.weight = 'weight'
 
    def talk(self):
        print("person is talking....")
 
class Chinese(Person):
 
    def __init__(self, name, age, language): 
        Person.__init__(self, name, age) 
        self.language = language
        print(self.name, self.age, self.weight, self.language)
 
    def talk(self):  # 子类 重构方法
        print('%s is speaking chinese' % self.name)
 
    def walk(self):
        print('is walking...')
 
c = Chinese('bigberg', 22, 'Chinese')
c.talk()
 
# 输出
bigberg 22 weight Chinese
bigberg is speaking chinese

结尾小彩蛋!

文件操作

方法 含义
r 只读,文件不存在是报错
w 写,覆盖写
a 写,追加写
rb 二进制方式打开文件,只读
def write_file():
    file = "abc.txt"
    content = "haha\n12345"
    with open(file, "w") as f:
        f.write(content)
    
try:
    write_file()
except Exception as err:
    print(err)

貂蝉_绝世舞姬.jpg
上一篇 下一篇

猜你喜欢

热点阅读