roselearn

导航

Python类和实例

 概念太抽象了,举例说明

class People(object):
    position = "这是类属性1"
    school = "这是类属性2"

    @classmethod
    def read(cls):
        msg = "这是类方法,可以类调用,也可以实例调用"
        return msg

    def __init__(self, name, age):
        """这是构造方法,也叫魔法方法,下面是实例属性"""
        self.name = name
        self.age = age
        self.s = self.school #可以调用类属性
        self.__money = "这是私有属性"

    def __privatefun(self):
        msg = "这是私有方法"
        return msg

    def run(self):
        msg = "这是实例方法"
        return msg

    def go(self):
        msg = f"这里是实例方法,可以获取类属性:{self.position},也可以调用类方法:{self.read()}"
        return msg

    def prifun(self):
        msg = f"这是实例方法,可以调用私有属性:{self.__money};也可以调用私有方法:{self.__privatefun()};只能内部调用"
        return msg

    @staticmethod
    def fun():
        """类里的函数就叫静态方法,类和实例都可以调用"""
        msg = "这是静态方法"
        return msg


zhangsan = People("zhangsan", 20) #实例化
print("实例获取实例属性---",zhangsan.name)
print("实例属性里获取类属性---",zhangsan.s)
print("实例调实例方法---",zhangsan.run())
print("实例方法里获取类属性和类方法---",zhangsan.go())
print("类调类属性---",People.position)
print("类调类方法---",People.read())
print("实例调类属性---",zhangsan.position)
print("实例调类方法---",zhangsan.read())
print("实例方法调私有属性和私有方法---",zhangsan.prifun())
print("实例调静态方法---",zhangsan.fun())
print("类调静态方法---",People.fun())
# print("私有属性和方法不能在外部调用,所以这样是错误的---",zhangsan.__money)

 运行结果如下

 

posted on 2023-05-05 14:16  dongzs  阅读(19)  评论(0编辑  收藏  举报