Python-面向对象 一

1.类
"""
    类

    声明一个类
        class 类名:
            类的内容

    创建类的实例
        实例名 = 类名()

    添加实例的动态属性
        类的实例.属性名 = xxx
"""

# 声明一个类
class Student:

    # 类中方法默认有self参数,self代表实例本身
    def study(self):  # 成员方法
        print("学习")

    def sleep(self):
        print("睡觉")


# 创建类的实例
s = Student()
# 给实例动态添加一个属性
s.name = "tony"
# 调用实例的方法
s.study()
s.sleep()
# 打印实例动态添加的属性
print(s.name)
2.构造方法
"""
    初始化方法__init__
    self:指的是实例(对象)本身
"""

class Person:
    def __init__(self, name, age):  # 构造方法(又叫魔法方法、初始化方法) 在创建对象的时候自动执行
        print("init")
        # 在构造方法中添加参数,使用self给实例添加属性指定为构造方法的参数,使得每个实例都拥有该属性,并在创建实例的时候可以赋值
        self.name = name
        self.age = age

    # def __str__(self):  # 该方法返回什么打印对象的时候就打印什么,不写该方法打印对象的时候输出的是对象在内存中的地址
    #     return "Person类"

    def eat(self):
        print("吃")

    def sleep(self):
        print("睡觉")


tony = Person("tony", 20)
print(tony.name)
print(tony)
3.私有属性、私有方法
"""
    类的私有属性

        声明方式
            self.__属性名

    类的私有方法
        声明方法
            def __方法名
"""


class Person:
    def __init__(self):
        self.name = "tony"
        self.__age = 20  # 使用__属性名的方式声明一个私有属性,只有类的内部可以访问

    def printInfo(self):
        print(self.name, self.__age)


p = Person()
p.printInfo()  # tony 20
p.__age = "21"  # 该处修改的是共有属性,整个实例都可以进行访问
p.printInfo()  # tony 20 该处打印的__age是私有属性,私有属性没有被影响到,与上一行代码中的__age仅仅是属性名相同
print(p.__age)  # 21
4.类属性
"""
    类属性
        声明方式
        class Person:
            name = "tony" # 类属性,每一个该类的实例都可以对这个属性进行访问
            __age = "20" # 私有类属性 如何访问:在类中使用类名.属性名进行访问

            def __init__(self):
                xxx

            def xxx(self):
                pass
"""

class Person:
    name = "tony"
    __age = 18

    def printInfo(self):
        print(Person.name, Person.__age)


print(Person.name)  # tony
# print(Person.__age)  # 报错,找不到该属性
p = Person()
p.printInfo()  # tony 18
print(p.name)
5.静态方法
"""
    静态方法:不引用实例属性,实例方法,可以使用类属性(不推荐使用类属性),是一个独立的个体。使用@staticmethod修饰
"""


class Person:
    info = "HalloPython"

    @staticmethod
    def staticPrint():
        print("我是静态方法")


Person.staticPrint()  # 静态方法可以不使用实例进行调用,直接用类名.方法名的方式就可以进行访问
6.类方法
"""
    类方法
	使用@classmethod修饰
	可以访问类属性,也可以间接的创建对象,来访问实例属性
"""

class Person:

    age = 20

    # 构造方法
    def __init__(self):
        self.name = "tony"
        print("init")

    @classmethod
    def get_name(cls): 
        print(cls.age) # 类属性
        print(Person().name)  # 间接访问


Person.get_name()
7.属性方法
"""
    把方法作为一个属性来访问
"""

# class Person:
#     def __init__(self):
#         self.__age = 0
#         self.__height = 0
#
#     def setPersonInfo(self, age, height):
#         self.__age = age
#         self.__height = height
#
#     def getPersonInfo(self):
#         return self.__age, self.__height
#
#
#使用属性方法之前对实例属性进行set,get
# p = Person()
# p.setPersonInfo(10, 170)
# print(p.getPersonInfo())


class Person:
    def __init__(self):
        self.__info = 0

    @property
    def PersonInfo(self):
        return self.__info

    @PersonInfo.setter
    def setPersonInfo(self, info):
        self.__info = info

#使用属性方法之后对实例属性进行set,get
p = Person()
p.setPersonInfo = 20, 170
print(p.PersonInfo)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值