这应该是国内第一份甚至是唯一份讲renderDoc的免费二开的文档,基于Python,Qt等
(这是一个冷门的学科,本身做TA比例就只有1/10,技术TA的比例又1/10,然后会做工具几年资历的又1/10,假如1000个观众,应该只有1个观众会往下看,谢谢观看!!)
qdCaptureView
#python 中 renderDoc 类的继承这么写
import qrenderdoc as qrd
class Window(qrd.CaptureViewer):
def __init__(self, ctx: qrd.CaptureContext, version: str):
super().__init__()
print("Creating WIMD window")
属性和事件
event | def OnEventChanged(self, event): draw = self.ctx.GetAction(event) |
竟然是点击drawCall(事件),也可以键盘上下选择drawCall,会触发这个方法 |
python对于类的成员没有严格的访问控制限制,这与其他面向对象的语言有区别。关于私有属性和私有方法,有如下要点:
1)通常我们约定,两个下划线开头的属性是私有的,其他是公共的;
2)类内部可以访问私有属性(方法)
3)类外部不能直接访问私有属性(方法)
4)类外部可以通过“_雷鸣__私有属性(方法)”访问私有属性(方法)
class Employee:
def __init__(self,name,age):
self.name = name
self.__age = age
e = Employee("gaoqi",18)
print(e.name)
print(e.__Employee__age)
报错:AttributeError: 'Employee' object has no attribute '__Employee__age'
正确写法是“_Employee__age”,类名前面是一个下划线;
另外可看看。。。。
Python - 面向对象编程 - 公共属性、保护属性、私有属性-腾讯云开发者社区-腾讯云
估计最新版本的python 不支持-再下面这种官方文档写法了
(尽信书不如无书,我试过,65,66行这么写是错的,69这么写反而对,应该随意一个方法都可以写self.xxx,
但还是建议统一在头部,__init__统一写)
(官方文档写法)
class PoloBlog:
# 公共属性
sum = 0
# 构造方法
def __init__(self, name):
self.name = name
# 公共方法
def test(self):
...
Python 全局变量
#全局变量
city = "Athens"
def travel_plans():
#首先,这就像我试图访问在函数外部定义的全局变量时一样。
#正如您之前所见,这本身就可以正常工作。
print(f"I want to visit {city} next year!")
#但是,当我尝试从函数内部为全局变量 “city” 重新分配不同的值时,
#尝试打印后,
#它会抛出一个错误
city = "London"
print(f"I want to visit {city} next year!")
#调用函数
travel_plans()
#输出
#UnboundLocalError: local variable 'city' referenced before assignment
Python教程(十)面向对象(9)类的访问控制 - songz
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class UserInfo(object):
def __init__(self, name, age, account):
self.name = name
self._age = age
self.__account = account
def get_account(self):
return self.__account
if __name__ == '__main__':
userInfo = UserInfo('两点水', 23, 347073565);
# 打印所有属性
print(dir(userInfo))
# 打印构造函数中的属性
print(userInfo.__dict__)
print(userInfo.get_account())
# 用于验证双下划线是否是真正的私有属性
print(userInfo._UserInfo__account)
def saveShaderText(t):
pass
# 调用方法:
# for v in cbufferVars:
# s+=print_var(v)
def print_var(v, indent = ''):
# TODO: ugly
if '[' in v.name or ']' in v.name:
# v is a row of a matrix
valstr = ''
indent = ''
if hasattr(shader, 'programResourceId'):
这些大佬,对于python语法的详细说明,就挺好了,
(个人只是陆陆续续,用了Python很多年,对2.7和3.2也不是很熟悉,不是很熟悉最新发展)
只是现在回过头来看,那时候还“证明”过2.7和3.2的区别,现在看来基搞笑,2.7过时是必然的,3.2->3.X 是历史发展的必然
(世界大同还是挺好的,Python从无政府状态,逐渐增加一些监督管理;而TypeScript在强政府的道路上注定走不远,貌似把javaScript干掉了,其实最终发现自己不得不成为另一个javaScript,这是各大普通程序员的人心所向)
Python类型注解,你需要知道的都在这里了 - 知乎 (zhihu.com)