首页 > 编程语言 >python高级语法笔记

python高级语法笔记

时间:2023-07-08 16:23:49浏览次数:38  
标签:__ python self 笔记 class 语法 print price def

5.python高级一/demo03_python环境变量路径.py

from loguru import logger
import sys
sys.path.append('/Users/toby/Downloads/PythonAdvanced/code/pythonAdvanced5Verify')

for path in sys.path:
    logger.debug(path)

5.python高级一/demo09_xxxsetter和xxxdeleter装饰器.py

# -*- coding:utf-8 -*-
# coding=utf-8
import os
from loguru import logger
logger.add(os.path.join(os.path.dirname(__file__) , os.path.basename(__file__).split('.')[0]+'.z.log'))



class Goods(object):
    """python3中默认继承object类
        以python2、3执行此程序的结果不同,因为只有在python3中才有@xxx.setter  @xxx.deleter
    """

    @property
    def price(self):
        logger.debug('@property')

    @price.setter
    def price(self, value):
        logger.debug('@price.setter')

    @price.deleter
    def price(self):
        logger.debug('@price.deleter')


obj = Goods()
obj.price  # 自动执行 @property 修饰的 price 方法,并获取方法的返回值
obj.price = 123  # 自动执行 @price.setter 修饰的 price 方法,并将  123 赋值给方法的参数
del obj.price  # 自动执行 @price.deleter 修饰的 price 方法

# 2023-06-29 23:33:23.225 | DEBUG    | __main__:price:16 - @property
# 2023-06-29 23:33:23.225 | DEBUG    | __main__:price:20 - @price.setter
# 2023-06-29 23:33:23.225 | DEBUG    | __main__:price:24 - @price.deleter

5.python高级一/demo18_call方法.py

# __call__方法
class CallTest(object):
    def __init__(self):
        print('execute init method')
        pass

    def __call__(self, *args, **kwargs):
        print('__call__')


obj = CallTest()  # 执行 __init__
# 把一个对象当做一个函数执行,就回调用call 方法
obj()  # 执行 __call__

5.python高级一/demo12.py

# -*- coding:utf-8 -*-
# -*- coding:utf-8 -*-


class Goods(object):
    def __init__(self):
        # 原价
        self.original_price = 100
        # 折扣
        self.discount = 0.8

    def get_price(self):
        # 实际价格 = 原价 * 折扣
        new_price = self.original_price * self.discount
        return new_price

    def set_price(self, value):
        self.original_price = value

    def del_price(self):
        del self.original_price

    PRICE = property(get_price, set_price, del_price, '价格属性描述。。。。')


obj = Goods()
original_price = obj.PRICE  # 获取商品价格
print(original_price)
obj.PRICE = 200  # 修改商品原价
desc = Goods.PRICE.__doc__

print(desc)
del obj.PRICE  # 删除商品原价

5.python高级一/demo21_getitem_setitem_delitem.py

# __getitem__、__setitem__、__delitem__
class Foo(object):

    def __getitem__(self, key):
        print('__getitem__', key)

    def __setitem__(self, key, value):
        print('__setitem__', key, value)

    def __delitem__(self, key):
        print('__delitem__', key)


obj = Foo()

result = obj['k1']  # 自动触发执行 __getitem__
obj['k2'] = 'laowang'  # 自动触发执行 __setitem__
del obj['k1']  # 自动触发执行 __delitem__

5.python高级一/demo06.py

import os
from loguru import logger
logger.add(os.path.join(os.path.dirname(__file__) , os.path.basename(__file__).split('.')[0]+'.z.log'))

class Money(object):
    def __init__(self):
        self.__money = 100

    def getMoney(self):
        return "¥ %d" % self.__money

    def setMoney(self, value):
        if isinstance(value, int):
            self.__money = value
        else:
            print("error:不是整型数字")


m = Money()
m.setMoney(100)
res = m.getMoney()
logger.debug(res)

5.python高级一/demo19_dict方法.py

import os
from loguru import logger
logger.add(os.path.join(os.path.dirname(__file__) , os.path.basename(__file__).split('.')[0]+'.z.log'))

# __dict__方法
class Province(object):
    country = 'China'

    def __init__(self, name, count):
        self.name = name
        self.count = count

    def func(self, *args, **kwargs):
        print('func')


# 获取类的属性,即:类属性、方法、
logger.debug(Province.__dict__) # => {'__module__': '__main__', 'country': 'China', '__init__': <function Province.__init__ at 0x100fdf1a0>, 'func': <function Province.func at 0x100fdf240>, '__dict__': <attribute '__dict__' of 'Province' objects>, '__weakref__': <attribute '__weakref__' of 'Province' objects>, '__doc__': None}

obj1 = Province('山东', 10000)
logger.debug(obj1.__dict__) # 输出:{'count': 10000, 'name': '山东'}

obj2 = Province('山西', 20000)
logger.debug(obj2.__dict__)# 输出:{'count': 20000, 'name': '山西'}





5.python高级一/demo05_类方法传入实例调用实例方法.py

import os
from loguru import logger
logger.add(os.path.join(os.path.dirname(__file__) , os.path.basename(__file__).split('.')[0]+'.z.log'))



class MiniOS(object):
    """MiniOS 操作系统类 """
    def __init__(self, name):
        self.name = name
        self.apps = []  # 安装的应用程序名称列表

    def __str__(self):
        """打印实例会调用的方法

        Returns:
            _type_: _description_
        """
        return "%s 安装的软件列表为 %s" % (self.name, str(self.apps))

    def install_app(self, app):
        # 判断是否已经安装了软件
        if app.name in self.apps:
            print("已经安装了 %s,无需再次安装" % app.name)
        else:
            app.install()
            self.apps.append(app.name)




class App(object):
    def __init__(self, name, version, desc):
        self.name = name
        self.version = version
        self.desc = desc

    def __str__(self):
        return "%s 的当前版本是 %s - %s" % (self.name, self.version, self.desc)

    def install(self):
        logger.debug("将 %s [%s] 的执行程序复制到程序目录..." % (self.name, self.version))


class PyCharm(App):
    pass


class Chrome(App):
    def install(self):
        logger.warning("正在解压缩安装程序...")
        super().install()


linux = MiniOS("Linux")
logger.debug(linux)

pycharm = PyCharm("PyCharm", "1.0", "python 开发的 IDE 环境")
chrome = Chrome("Chrome", "2.0", "谷歌浏览器")

# 方法中传入一个类,然后在类中其相关的方法
linux.install_app(pycharm)
linux.install_app(chrome)
linux.install_app(chrome)


logger.debug(linux)


    

    

5.python高级一/demo07_装饰方法成属性.py

class Money(object):
    def __init__(self):
        self.__money = 100

    @property
    def getMoney(self):
        return "¥ %d" % self.__money

    def setMoney(self, value):
        if isinstance(value, int):
            self.__money = value
        else:
            print("error:不是整型数字")


m = Money()
m.setMoney(100)
res = m.getMoney
print(res)

5.python高级一/demo17_del方法.py

# __del__方法
class DelTest(object):
    def __init__(self):
        print("__init__方法运行了")

    def __del__(self):
        print("__del__方法运行了")


defTest = DelTest()

5.python高级一/demo16_init方法.py

# __init__方法
class InitTest(object):
    def __init__(self, name):
        print("__init__执行了")
        self.name = name
        self.age = 18


laowang = InitTest('laowang')


5.python高级一/demo18_call和init的区别.py

# __call__方法
class CallTest(object):
    def __init__(self):
        pass

    def __call__(self, *args, **kwargs):
        print('__call__')


obj = CallTest()  # 执行 __init__
obj()  # 执行 __call__

5.python高级一/demo08.py

# -*- coding:utf-8 -*-
# ############### 定义 ###############
class Pager:
    """
    旧式类
    """
    def __init__(self, current_page):
        # 用户当前请求的页码(第一页、第二页...)
        self.current_page = current_page
        # 每页默认显示10条数据
        self.per_items = 10

    @property
    def start(self):
        val = (self.current_page - 1) * self.per_items
        return val

    @property
    def end(self):
        val = self.current_page * self.per_items
        return val


# ############### 调用 ###############
p = Pager(1)
print(p.start)  # 就是起始值,即:m
print(p.end)  # 就是结束值,即:n

5.python高级一/demo02_私有属性和私有方法.py

class Person(object):
    def __init__(self, name, age, taste):
        self.name = name
        self._age = age
        self.__taste = taste

    def showperson(self):
        print(self.name)
        print(self._age)
        print(self.__taste)

    def dowork(self):
        self._work()
        self.__away()

    def _work(self):
        """私有方法
        """
        print('my _work')

    def __away(self):
        """私有方法
        """
        print('my __away')


p = Person(name="lisi", age=18, taste="哈哈")
print(p.name)
print(p._age)
# 下面的方法不能访问
# print(p.__taste)
# 按照下面的方法可以访问
# 如何访问私有属性
print(p._Person__taste)

5.python高级一/demo14_doc信息.py

class Doc(object):
    """这里是当前这个类的描述信息

    Args:
        object (_type_): _description_
    """
    pass
    


d = Doc()
print(d.__doc__)

5.python高级一/demo04_静态方法_类方法.py

class Person(object):
    def foo(self):
        """
        实例方法
        :return:
        """
        print(id(self))  # 用来查看对象的id

    @staticmethod
    def static_foo():
        """
        静态方法
        :return:
        """
        print("in static")

    @classmethod
    def class_foo(cls):
        """
        类方法
        :return:
        """
        print("in class")


p1 = Person()
p2 = Person()
p1.foo()
p2.foo()

p1.static_foo()
p1.class_foo()

# 运行顺序 实例->类对象->类对象方法
# 可以使用__class__来调用类对象方法
p1.__class__.class_foo()

5.python高级一/demo11.py

# -*- coding:utf-8 -*-


# coding=utf-8
class Foo(object):
    def get_bar(self):
        print("getter...")
        return 'laowang'

    def set_bar(self, value):
        """必须两个参数"""
        print("setter...")
        return 'set value' + value

    def del_bar(self):
        print("deleter...")
        return 'laowang'

    BAR = property(get_bar, set_bar, del_bar, "description...")


obj = Foo()

bar = obj.BAR  # 自动调用第一个参数中定义的方法:get_bar
print(bar)

obj.BAR = "alex"  # 自动调用第二个参数中定义的方法:set_bar方法,并将“alex”当作参数传入

desc = Foo.BAR.__doc__  # 自动获取第四个参数中设置的值:description...
print(desc)

del obj.BAR  # 自动调用第三个参数中定义的方法:del_bar方法

5.python高级一/demo15_test.py

# -*- coding:utf-8 -*-
class Person(object):
    def __init__(self):
        self.name = 'laowang'

5.python高级一/demo15_module和class.py

# __module__和__class__
from demo15_test import Person

obj = Person()

print(obj.__module__)  # 输出 test 即:输出模块
print(obj.__class__)  # 输出 test.Person 即:输出类

5.python高级一/demo10.py

# -*- coding:utf-8 -*-


class Goods(object):
    def __init__(self):
        # 原价
        self.original_price = 100
        # 折扣
        self.discount = 0.8

    @property
    def price(self):
        # 实际价格 = 原价 * 折扣
        new_price = self.original_price * self.discount
        return new_price

    @price.setter
    def price(self, value):
        self.original_price = value

    @price.deleter
    def price(self):
        del self.original_price


obj = Goods()
original_price = obj.price  # 获取商品价格
print(original_price)
obj.price = 200  # 修改商品原价
del obj.price  # 删除商品原价

5.python高级一/demo20_str方法.py


# __str__方法
class StrTest(object):
    def __str__(self):
        return 'laowang'


obj = StrTest()
print(obj)

标签:__,python,self,笔记,class,语法,print,price,def
From: https://www.cnblogs.com/zhuoss/p/17537407.html

相关文章

  • python闭包_装饰器
    6.python高级知识-闭包装饰器/demo02_闭包.py#-*-coding:utf-8-*-#第一种方法================================#每次都更具汇率和钱都写一遍#这种方法是太烦了print("第一种方法")rate_usa=0.7money=100#print(rate_usa*money)print("第一种方法结束")#......
  • python创建类似于wx.EVT_BUTTON这样的自定义事件
    想要创建类似于wx.EVT_BUTTON这样的自定义事件,可以通过定义一个继承自wx.PyEvent的子类,并在其中添加自定义的事件类型。下面是一个示例代码:importwx#创建自定义事件类型MY_EVENT_TYPE=wx.NewEventType()EVT_MY_EVENT=wx.PyEventBinder(MY_EVENT_TYPE,1)#创建自定义......
  • Python socket编程(转载)
    Pythonsocket编程https://www.cnblogs.com/linhaifeng/articles/6129246.html套接字工作流程服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,......
  • 从零用python flask框架写一个简易的网站
    要用Python写一个网站,你可以使用Python的Web框架来开发。常见的PythonWeb框架包括Django、Flask、Bottle等。以下是一个简单的使用Flask框架开发的示例。1.安装Flask在开始开发之前,你需要安装Flask框架。你可以使用以下命令来安装:pipinstallflask2.创建Flask应用在安装......
  • python: create animated GIF
    #-*-coding:UTF-8-*-#encoding:utf-8#-*-coding:UTF-8-*-#版权所有2023©涂聚文有限公司#许可信息查看:#描述:#Author:geovindu,GeovinDu涂聚文.#IDE:PyCharm2023.1python11#Datetime:2023/7/511:08#User:geovindu#Prod......
  • python中偏导数Partial使用方法
    partial()偏函数partial是Pythonfunctools模块中的一个高级函数。它对普通函数进行封装,主要功能是把一个函数的部分参数给固定住,返回一个新的函数。通俗点说,就是冻结原函数的某些参数。该函数形式如下:functools.partial(func[,*args][,**kwargs])其中func是定义的函数。......
  • 高级编程技巧揭秘!精通Python装饰器,打造灵活强大的代码结构!
    装饰器是Python中一种强大而灵活的编程技巧,它可以用于修改或扩展函数的行为,同时又不需要修改函数的源代码。本文将介绍Python中的装饰器的基本概念、使用方法以及高级技巧,帮助你从入门到精通装饰器的使用。一、基本概念在深入学习装饰器之前,我们首先需要了解一些基本概念。1.1......
  • Python内置函数zip()的用法
    zip()函数介绍:zip()函数是Python的内置函数,将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的list(Python3为了节约内存,zip()返回的是zip对象,需要通过list()手动转换成列表)如果zip()没有可迭代的元素,则它将返回一个空的迭代器,如果每个迭代器......
  • python 下载element源码
    #encoding:utf-8frombs4importBeautifulSoupimportrequests,re,os,socketfromurllibimportrequest#指定要下载的版本element_ui_version="2.15.13"#指定文件要存放的位置element_ui_dir="D:/tmp"save_ui_dir=os.path.join(element_ui_dir,"elem......
  • 如何实现MAC Python加入环境变量的具体操作步骤
    如何在Mac上将Python加入环境变量作为一名经验丰富的开发者,我将帮助你学习如何在Mac上将Python加入环境变量。这将使你能够在终端中直接运行Python命令,而无需指定完整的Python安装路径。整体流程下面是添加Python到环境变量的步骤:步骤内容步骤一打开终......