保护对象的属性

本文详细探讨了Python中面向对象编程的基本概念,包括新式类与经典类的区别,私有属性的实现方式,以及如何通过方法来保护和访问类的内部状态。通过具体的代码示例,读者可以了解到如何定义类,初始化对象,使用私有属性,以及实现定制方法如__str__和设置年龄的setNewAge方法。
#如果有(object)叫  新式类
#原来的那种没有的,称为经典类


class Person(object):
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

xiaoming = Person("小明",18)

print(xiaoming.__age)

xiaoming.__age = 19

print(xiaoming.__age)

 

#如果有(object)叫  新式类
#原来的那种没有的,称为经典类


class Person(object):
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    def __str__(self):
        return "年龄为:"+str(self.__age)

    def setNewAge(self,newAge):
        self.__age = newAge

xiaoming = Person("小明",18)
print(xiaoming)
#print(xiaoming.__age)
#xiaoming.__age = 19
#print(xiaoming.__age)

xiaoming.setNewAge(19)
print(xiaoming)
#如果有(object)叫  新式类
#原来的那种没有的,称为经典类


class Person(object):
    def __init__(self, name, age):
        self.__name = name  #私有属性
        self.__age = age
        self.high = 180 #公有属性

    def __str__(self):
        return "年龄为:"+str(self.__age)

    def setNewAge(self,newAge):
        if newAge>0 and newAge<80:   #保护属性
            self.__age = newAge

xiaoming = Person("小明",18)
print(xiaoming)
#print(xiaoming.__age)
#xiaoming.__age = 19
#print(xiaoming.__age)

xiaoming.setNewAge(119)
print(xiaoming)
#如果有(object)叫  新式类
#原来的那种没有的,称为经典类


class Person(object):
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    def __str__(self):
        return "年龄为:"+str(self.__age)

    def setNewAge(self,newAge):
        if newAge>0 and newAge<80:   #保护属性
            self.__age = newAge

    def getAge(self):
        return self.__age

xiaoming = Person("小明",18)
print(xiaoming)
#print(xiaoming.__age)
#xiaoming.__age = 19
#print(xiaoming.__age)

xiaoming.setNewAge(119)
print(xiaoming)

ageTemp = xiaoming.getAge()
print(ageTemp)

 

 

 

<think>我们之前已经讨论过PADS中解除对象保护属性的方法,现在用户要求更具体的操作步骤。需要详细说明如何修复对象保护属性(即解除Glued和Read Only属性)的具体操作流程。 注意:用户的问题是关于如何修复对象保护属性,所以我们要重点描述操作步骤,可能包括菜单操作、右键菜单、属性对话框等。 同时,按照要求,在回答后提出3-5个相关问题,以“§§相关问题§§”开头,然后列出编号问题。 根据之前的经验,我们可以这样描述:</think>### 如何修复PADS对象保护属性(解除Glued/Read Only锁定) 以下是具体操作步骤和注意事项: --- #### **方法1:图形界面操作(推荐)** ```python # 分步骤操作指南: [1] 选择对象: - 单个对象:左键单击元件/走线/过孔 - 多个对象:按住Ctrl+左键多选 或 框选区域 - 全选:Ctrl+A [2] 打开属性窗口: 右键菜单 → Properties → 弹出"Object Properties" [3] 解除保护属性: ▢ 取消勾选 "Glued" (防止移动) ▢ 取消勾选 "Read Only" (允许编辑) → 勾选 "Apply to all selected objects" [4] 强制生效: 按F3刷新视图 或 执行Tools → Update Design ``` #### **方法2:命令行强制解锁** ```python # 在PADS命令窗口输入: unprotect object * # 解锁所有对象 unprotect net GND # 解锁指定网络 unprotect comp U1 # 解锁指定元件 ``` #### **方法3:脚本批量处理** 创建`unlock.vbs`脚本: ```vb Sub Main Set Objects = ActiveDocument.SelectedObjects For Each Obj In Objects Obj.Glued = False ' 解除固定 Obj.ReadOnly = False ' 解除只读 Next MsgBox "已解锁 " & Objects.Count & " 个对象" End Sub ``` 运行:Tools → Basic Scripts → Load File → 选择脚本 --- ### **三大关键注意事项** 1. **层级权限** - 板框(Board Outline)需在`Setup → Board Outline`中解锁 - 铜箔(Copper)需在绘图模式(Drafting Toolbar)修改 2. **保护属性继承关系** ```mermaid graph TD A[元件Component] --> B[焊盘Pads] A --> C[丝印Silkscreen] D[网络Net] --> E[走线Traces] D --> F[过孔Vias] ``` **操作原则**:修改父级对象(如元件)将自动解锁子级对象 3. **异常场景处理** | 现象 | 解决方案 | |-----------------------|--------------------------| | 属性窗口无法打开 | 检查是否启用"ECO Mode" | | 脚本执行报错 | 以管理员身份启动PADS | | 部分对象仍被锁定 | 执行File → Repair Design | --- ### **预防再次锁定的配置** 1. **永久禁用自动锁定** ```python # 修改注册表: [HKEY_CURRENT_USER\Software\MentorGraphics\PADS] "AutoGlueComponents"=dword:00000000 ``` 2. **创建安全模板** 保存解锁状态的PCB为模板文件: `File → Save As → 保存类型选.dft → 勾选“As Default Template”`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值