Hirdetés
- Kormányok / autós szimulátorok topikja
- TCL LCD és LED TV-k
- Házimozi belépő szinten
- Milyen billentyűzetet vegyek?
- Multimédiás / PC-s hangfalszettek (2.0, 2.1, 5.1)
- Soundbar, soundplate, hangprojektor
- ThinkPad (NEM IdeaPad)
- Jó, jó, mechanikus billentyűzetet... de milyet?
- Bambu Lab 3D nyomtatók
- Elkészült az adventi hardverfelfújt
Új hozzászólás Aktív témák
-
cousin333
addikt
A namedtuple egy "gyártó függvény" (factory function), aminek az eredménye ebben az esetben egy osztály lesz (mintha mondjuk nem kellene megírnod a Kör osztályt előre, hanem futás közben dinamikusan hoznád létre). Az i2c_io_pinout tehát lényegében egy osztály (amit talán elegánsabb lenne ennek megfelelően camel-case-el jelölni: pl. I2cIoPinout), az i2c_io_state meg valóban egy példány.
Az adott számú "kulcsnevet" vagy az eredeti elnevezés tömbbel éred el, vagy a _fields paraméterrel. Pl.:
i2c_io_state._fields[1]
Őszintén szólva nem tudom, mire kell, de nekem az a véleményem, hogy ha ezt akarod elérni, akkor nem jól használod a típust, hiszen ez pont arra lenne jó, hogy ne kelljen ismerni a sorrendet a létrehozást követően.
Alapvetően én az egész külső IC-nek egy osztályt hoznék létre, hasonlóan a már létező I2C, SPI... stb. osztályokhoz, ami aztán minden létező funkciót egy névtérbe "csomagol". Valami ilyesmi struktúrával:
class IoModule(object):
MASK_SWITCH1 = 0x30
def __init__(self, interface):
self.port = interface
self.portA_status = None
self.portB_status = None
def connect(self):
.... # connect here
def close(self):
self.port.close()
def update_ports(self):
self.portA_status = self.port.read(<reg_portA>)
self.portB_status = self.port.read(<reg_portB>)
def compare_portA(self):
port_old = self.portA_status
self.update_ports()
port = self.portA_status
return port & port_old
@property
def id(self):
return self.port.read(<id_reg>)
@property
def Switch1(self):
return True if self.port_status & self.MASK_SWITCH else False
Ebben az esetben az osztályunk példányosításkor megkapja az interfészt (ami ebben az esetben egy I2C objektum), és azt használja a továbbiakban. A fenti kód elég kezdetleges, csak a struktúrát akartam megmutatni.
ui: ha listaelemeken akarsz végigmenni, akkor ne használd a range(len(x)) formulát. Ha az elem kell, akkor
for elem in lista:
print(elem)
Ha kell a sorszám is, akkor enumerate:
for i, elem in enumerate(lista):
print('Az', i, 'elem a(z)', elem)
Ha pedig több egyforma listád van, akkor zip:
for elemA, elemB in zip(listaA, listaB):
print('Az A eleme:', elemA, 'a B eleme pedig:', elemB)
[ Szerkesztve ]
"We spared no expense"
Új hozzászólás Aktív témák
- Új RYZEN 7 5800X (8 mag/16 szál) +hűtött VRM-es ASUS lap +Új 32GB hűtőbordás DDR4 kit! GAR/SZÁMLA!!!
- Canon EOS 90D + 18-135mm + 50mm f/1.4
- 0 perces RYZEN 3 laptop eredeti Win10-zel! FullHD IPS / 12GB DDR4 / 1TB M.2 SSD! Garancia+számla!
- AKCIÓ!!! GAMER PC: RYZEN 5 4500-5600X + RTX 3060 12GB GDDR6! GAR/SZÁMLA/BESZÁMÍTÁS/INGYENFUTÁR!!!
- KERESEK eredeti SNES PAL konzolt
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Axon Labs Kft.
Város: Budapest